基本数据类型不一定存储在栈内存。
基本数据类型是存储在栈内存还是堆内存,要看基本数据类型声明在哪里。
public class Test {
int i=99;
}
声明在类中的时候,是成员变量也是全局变量。创建对象时就会存储在堆内存中。
public void test(){
int i=99;
}
声明在方法中的时候,是局部变量。调用方法时就会存储在栈内存中。
关于常量池
Java的8种基本类型的包装类(Byte, Short, Integer, Long, Character, Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池, 但是它们只在大于等于-128并且小于等于127时才使用常量池。 因为Java对于-128到127之间的数,会进行缓存, 超过这个范围就需要创建对象。
Integer i=100;
Integer n=100;
System.out.println(i==n);//输出结果为true
两个Integer的值都在大于-128且小于127这时候用“==”比较,发现结果为true。
Integer i=128;
Integer n=128;
System.out.println(i==n);//结果为false
两个Integer的值都在大于127这时候用“==”比较,发现结果为false。