基本数据类型的存储和常量池

417 阅读1分钟

基本数据类型不一定存储在栈内存

基本数据类型是存储在栈内存还是堆内存,要看基本数据类型声明在哪里。

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。