Java菜鸟教程math类_Java Number Math 类
Java 中 int 和 Integer 的區別
1. int 是基本數據類型,int 變量存儲的是數值。Integer 是引用類型,實際是一個對象,Integer 存儲的是引用對象的地址。
2.
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
因為 new 生成的是兩個對象,其內存地址不同。
3.
int 和 Integer 所占內存比較:
Integer 對象會占用更多的內存。Integer 是一個對象,需要存儲對象的元數據。但是 int 是一個原始類型的數據,所以占用的空間更少。
4. 非 new 生成的 Integer 變量與 new Integer() 生成的變量比較,結果為 false。
/**
* 比較非new生成的Integer變量與new生成的Integer變量
*/
public class Test {
public static void main(String[] args) {
Integer i= new Integer(200);
Integer j = 200;
System.out.print(i == j);
//輸出:false
}
}
因為非 new 生成的 Integer 變量指向的是 java 常量池中的對象,而 new Integer() 生成的變量指向堆中新建的對象,兩者在內存中的地址不同。所以輸出為 false。
5. 兩個非 new 生成的 Integer 對象進行比較,如果兩個變量的值在區間 [-128,127] 之間,比較結果為 true;否則,結果為 false。
/**
* 比較兩個非new生成的Integer變量
*/
public class Test {
public static void main(String[] args) {
Integer i1 = 127;
Integer ji = 127;
System.out.println(i1 == ji);//輸出:true
Integer i2 = 128;
Integer j2 = 128;
System.out.println(i2 == j2);//輸出:false
}
}
java 在編譯 Integer i1 = 127 時,會翻譯成 Integer i1 = Integer.valueOf(127)。
6. Integer 變量(無論是否是 new 生成的)與 int 變量比較,只要兩個變量的值是相等的,結果都為 true。
/**
* 比較Integer變量與int變量
*/
public class Test {
public static void main(String[] args) {
Integer i1 = 200;
Integer i2 = new Integer(200);
int j = 200;
System.out.println(i1 == j);//輸出:true
System.out.println(i2 == j);//輸出:true
}
}
包裝類 Integer 變量在與基本數據類型 int 變量比較時,Integer 會自動拆包裝為 int,然后進行比較,實際上就是兩個 int 變量進行比較,值相等,所以為 true。
flaming
flaming
248***1347@qq.com1年前 (2018-12-12)
總結
以上是生活随笔為你收集整理的Java菜鸟教程math类_Java Number Math 类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑编程用户注册界面java_用JSP/
- 下一篇: java数据接口之链表_Java数据结构