一、编译型语言和解释型语言
  1. 编译型语言:程序执行前,必须把源代码编译成机器可识别的语言文件,如exe格式的文件,以后要再运行时,直接运行编译后文件即可。由于只编译一次,所以运行效率比较高,但是由于与特定平台相关,一般无法移植到其他平台,所以跨平台性差。

  2. 解释型语言:程序在执行时,源代码边编译边执行,不需要提前编译。由于程序每次运行都需要编译解释执行,所以运行效率较低,但是只要运行的平台能提供相应的解释器,就可以运行源代码,所以跨平台性较好。

  3. 编译型语言包括C、C++等;解释型语言包括Java、javascript、python等。

在这里插入图片描述

​ Java程序运行过程先由编译器将.java源文件编译为二进制字节码文件(.class文件),然后再由解释器将.class文件解释为机器可以直接 识别的语言进行执行,这一过程是在JVM中进行的。

​ 虽然java程序运行前经过了编译阶段,但是编译后的文件机器并不可以直接执行,所以 Java 应该归类为解释型语言。

二、Java注释

Java中有三种注释:

  1. 单行注释——’//’ 符号开头
  2. 多行注释——’/* */’ 格式
  3. 文档注释——’/** /’ 格式,可以使用JavaDoc 标签(各种各样的*@** 标签,如@author、@since等)
三、Java关键字

Java目前有48个关键字、2个保留字(goto、const)、3个特殊值(true、false、null),均不可以作为标识符使用

在这里插入图片描述

四、标识符

标识符:Java中的所有组成部分都需要有名字,类名、方法名、变量名都被称为标识符。

注意事项:

  1. 标识符可由数字、字母、下划线、美元符($)组成,其中数字不能作为标识符的开头;

  2. 不能使用关键字或保留字作为标识符;

  3. 标识符是对大小写敏感的;

  4. 可以使用中文名、拼音作为标识符,但是不建议;

  5. 建议使用驼峰法命名规则:

    1)类名:多个单词组成时,首字母均大写,如TestDemo

    2)方法名和变量名:由多个单词组成时,首单词字母小写,从第二个单词开始首字母大写,如studentName

    3)常量:单词全部大写,如果由多个单词组成,以下划线’_'分隔,如STUDENT_AGE

    4)标识符要尽量做到见名知义

五、数据类型

Java是一种强类型语言,所有变量必须先声明类型才能使用,如果不经过强制类型转换,那么它就一直是这种数据类型了,像.net 、Python、C++等语言都是强类型语言。弱类型语言是指某个变量被定义,其类型可以根据条件自动进行转换,不需要强制转换,像vb 、PHP、javascript等语言都是弱类型语言。

在这里插入图片描述

8种基本数据类型(byte、short、int、long、float、double、char、boolean)

  • 位(bit)是计算机内部数据储存的最小单位,比如10110010是一个8位二进制数

  • 字节(byte)是计算中数据处理的基本单位,使用大写B表示

  • 1B(byte,字节)=8bit(位)

  • 字符是指计算中使用的字母、数字、文字、符号等,所有的字符本质是数字,可通过强制转换获取对应数值,数值在0~65535之间(Unicode编码,通常用十六进制编码方案表示,范围在’\u0000’到’\uFFFF’之间)

  • 进制:
进制数值前缀
二进制0、10b
八进制0~70
十进制0~9\
十六进制0-9、A-F0x或者0X

注意:浮点数(float、double)进行计算、比较操作时,由于精度问题,结果可能会出现偏差,所以尽量要避免使用浮点数做精确计算处理,业务中需要小数数值进行计算应该使用BigDecimal类型数值。

  • 转义字符:

在这里插入图片描述

类型转换:

范围小的数据类型可以自动向范围大的数据类型转换,叫做自动类型转换(也叫隐式类型转换)

范围大的数据类型向范围小的数据类型转换,叫做强制类型转换(也叫显式类型转换),强制类型转换可能会造成内存溢出或精度丢失等问题

byte、short、char——>int——>long——>float——>double

低----------------------------------------------------------------------------->高

六、变量

变量按作用域可分为三种:

  • 类(静态)变量——类中定义,有static关键字修饰;
  • 成员(实例)变量——类中定义,无static关键字修饰;
  • 局部变量——方法内变量。

类变量及成员变量如果未初始化的话,是有默认值的:

  • 变量类型为整数型——默认值为0;
  • 变量类型为浮点型——默认值为0.0;
  • 变量类型为布尔型——默认值为false;
  • 变量类型为字符型——默认值为‘\u0000’(空字符),数值为0;
  • 变量类型为引用类型——默认值为null。

局部变量如果未初始化,无默认值,直接调用会提示错误

常量:以final关键字修饰的变量,必须在定义时直接进行初始化,并且之后不可以再重新赋值,一般情况是和static关键字搭配使用,变量名字母全部大写,以下划线分隔,如’LAST_NAME’

七、运算符

算数运算符:+、-、*、/、%、++、–

赋值运算符:=

关系运算符:>、<、>=、<=、==、!=、instanceof

逻辑运算符:&&、||、!

位运算符:&、|、^、~;>>;<<;>>>

条件(三目)运算符:?:

扩展赋值运算符:+=、-=、*=、/=

位运算符描述运算规则
&两个位都为1时,结果才为1,否则为0
|两个位都为0时,结果才为0,否则为1
^异或两个位相同为0,相异为1
~取反0变1,1变0
<<左移各二进位全部左移若干位,高位丢弃,低位补0
>>右移(有符号)各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
>>>右移(无符号)同上,不考虑符号

Demo测试:

public static void main(String[] args) {
	int A=0b0011_1100;
    int B=0b0000_1101;

    String result1 = toBinary(A&B,8);
    String result2 = toBinary(A|B,8);
    String result3 = toBinary(A^B,8);
    String str=Integer.toBinaryString(~B).toString();
    String result4 = str.substring(str.length()-8,str.length());
    int result5 = 2<<3;
    int result6 = 16>>2;
    int result7 = 16>>>2;

    System.out.println("A&B: " + result1);
    System.out.println("A|B: " + result2);
    System.out.println("A^B: " + result3);
    System.out.println("~B: " + result4);
    System.out.println("2<<3: " + result5);
    System.out.println("16>>2: " + result6);
    System.out.println("16>>>2: " + result7);
}

/**
 * 将一个int数字转换为二进制的字符串形式。
 * @param num 需要转换的int类型数据
 * @param digits 要转换的二进制位数,位数不足则在前面补0
 * @return 二进制的字符串形式
 */
public static String toBinary(int num, int digits){
    int parseValue=Integer.parseInt(Integer.toBinaryString(num));
    String finalValue=String.format("%0"+digits+"d", parseValue);
    return finalValue;
}
结果:
A&B: 00001100
A|B: 00111101
A^B: 00110001
~B: 11110010
2<<3: 16
16>>2: 4
16>>>2: 4
public static void main(String[] args) {
	int a=1;
    if(a++==2){
    	System.out.println("true1");
    }else{
        System.out.println("false1");
        System.out.println("a的值为:"+a);
    }

    int b=3;
    if(--b==2){
        System.out.println("true2");
    }else{
        System.out.println("false2");
        System.out.println("b的值为:"+b);
    }
}
结果:
结果false1
a的值为:2
true2
public static void main(String[] args) {
    int a=1;
    int b=2;
    System.out.println(""+a+b);
    System.out.println(a+b+"");
}
结果:
12
3
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐