JVM
学习-虚拟机栈局部变量表和常量池public class Demo{
public static void main(String[] args) {
int a = 10000;
int b = 10000;
Integer A = 10000;
Integer B = 10000;
System.out.println(a==b);//true
System.out.println(A==B);//false
}
}
public class Demo{
public static void main(String[] args) {
int a = 127;
int b = 127;
Integer A = 127;
Integer B = 127;
System.out.println(a==b);//true
System.out.println(A==B);//true
}
}
public class Demo{
public static void main(String[] args) {
double a = 127d;
double b = 127d;
Double A = 127d;
Double B = 127d;
System.out.println(a==b);//true
System.out.println(A==B);//false
}
}
上面三个案例的执行情况底层原理是什么?先说非包装类型的基本类型变量:int、short、long、byte、
float、doubke、boolean、char,这些基本类型的变量都是存放在虚拟机栈中的局部变量表中的。而其
中8种基本类型的包装类中有6种会存放在常量池种。那就是Byte、Boolean、Short、Integer、Long、
Character。Double和Float暂时没有实现,但这6种类型的取值范围也仅限于-128-127,所以上述三个
案例的结果也能解释清除了。