1.JDK JRE JVM之间的关系:
JDK:(java development kit):Java开发工具包,提供给Java程序员使用。包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar),同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。
JRE:(java runtime environment):):Java运行时环境,包含了JVM,Java基础类库。JRE是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
JVM:Java虚拟机,运行Java代码.JVM是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行
JDK中包含了JRE
JRE又包含JVM
2.byte 数据类型相加问题
byte b1=10;
byte b2=10;
byte b3=b1+b2;//该行代码会报错
原因是:计算 a + b 会先将 b1 和 b2 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 b3, 就会出现上述错误. 由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.
正确的代码:
byte b1 = 10;
byte b2= 20;
byte b3 = (byte)(b1 + b2);
3.类型提升小结:
1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.
4.java中没有规定boolean类型占几个字节
Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在 Oracle公司的虚拟机实现中,boolean占1个字节。
5.不相关的数据类型不能相互转换
6.赋值运算符
例1
int a=10;
double b=2.3;
a+=b;
结果:a= 12;
这里的a+=b;编译器会默认进行强制类型转换:a=a+(int)b;
例2:
int a=10;
double b=2.0;
a=a+b;//这里会报错
a+b:a会向上整形提升为double:
(double)a+(double)b:结果为double类型,无法装到Int中
7.短路求值
逻辑与 && : 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
逻辑或 ||,:如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短
路求值.
System.out.println(10>20&10/0==0);//会报错//0不能作除数
System.out.println(10<20|10/0==0);//会报错//0不能作除数

224

被折叠的 条评论
为什么被折叠?



