一、对于 java 变量 的存放
一般的变量存放在栈、堆、和内存池里面。用 new 声明出来的,一般放在堆内存中。而一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。对于常量池,像我们通常的 String s1="abc"; 这样声明的字符串对象就是存储在常量池中。
- String s1 = "abc";
- String s2 = "abc";
- String s3 = new String("abc");
- System.out.println(s1 == s2);
- System.out.println(s1 == s3);
这样输出的结果是 true 和 false。
二、Integer 和 int 的比较
- Integer a = new Integer(128);
- int b = 128;
- Integer c = new Integer(6);
- Integer d = new Integer(6);
- System.out.println(a == b);
- System.out.println(c == d);
输出的结果是 true 和 false
int 是基本数据类型,而 Integer 是对象,用一个引用指向一个对象。
int 跟 Integer 之间有装箱跟拆箱的方法:
装箱:
- //装箱
- Integer num=1; //将基本数据类型转换为对象
拆箱:
- //装箱
- Integer num=1;
- //拆箱
- int num1=nun; //将对象转换为基本数据类型
另外一点:
对于 Integer 装箱时的值,Java 定义从 - 128 到 127 之间的数,被装箱为 Integer 对象后,被存在内存中被重用,而且始终只有一个这个值的对象。
如果数值超过 128 或小于 - 127,就会 new 一个新的 Integer 对象。
- Integer a=128;
- Integer b=128;
- Integer c=127;
- Integer d=127;
- System.out.println(a==b);//结果false
- System.out.println(c==d);//结果ture
来源: http://www.bubuko.com/infodetail-2453242.html