一、标识符
由字母数字 _ 和$组成首位不要是数字
最好符合命名规范
二、关键字
Java中会用到的的有特殊意义的单词,都是小写
goto(易引起程序混乱)和const(c语言中表示常量)为保留字
三、常量
final修饰的变量
与c语言中的const类似
但和c中预编译的DEFINE完全不一样
四、变量
本质为一块内存
分为基本类型和引用类型
基本类型的内存中的二进制编码为数据本身,引用类型存的二进制编码为内存地址(类似指针)
五、基本数据类型(这段参考了《java虚拟机规范JavaSE 8版》)
1. 整数类型
(1) byte:8位有符号的二进制补码整数,默认值为0;
(2) short:16位有符号的二进制补码整数,默认值为0;
(3) int:32位有符号的二进制补码整数,默认值为0;
(4) long:64位有符号的二进制补码整数,默认值为0;
2. 浮点数类型
(1) float:与IEEE754标准的32位单精度的格式和操作相同;
(2) double:与IEEE754标准的64位双精度的格式和操作相同;
3. boolean类型:true或false
“虽然Java虚拟机定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替。”
——摘自《java虚拟机规范JavaSE 8版》
4. char类型 unsigned两字节正整数Unicode编码
5. (returnAddress型:指向虚拟机指令的操作码,只存在与虚拟机底层中,java语言中看不到,并且JDK7开始已处于名存实亡状态)
tips:1.byte short char 的运算在加载到操作数栈时都以int型来运算,因为在虚拟机中没有对应的操作指令
2.赋值时如果值处于范围内如short a=1是没问题的;
六、运算符:
1.二元运算符:
(1)算术运算符(+-*/%,)
2.一元运算符:自增和自减;
++i先运算再赋值
i++先赋值再运算
tips:测试i++与++i性能
上面分别在jdk8的版本中和在jdk12版本中的结果,所以在需要自增时,尽量使用i++而不是++i
六、转义字符
\n \t \\ \r \t \b 等
Tips:关于\r\n
Windows中使用\r\n或\n\r来换行, linux中使用\n来换行, mac中使用\r来换 行,使用时注意差异。
(参考https://www.cnblogs.com/xiaotiannet/p/3510586.html)
七、进制转换
二进制0b 八进制0 十六进制0x
二进制字节码可用十六进制来表示