float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...
一般地,當需要使用數字的時候,我們通常使用內置數據類型,如:byte、int、long、double 等。然而,在實際開發過程中,我們經常會遇到需要使用對象,而不是內置數據類型的情形。為了解決這個問題,Java 語言為每一個內置數據類型提供了對應的包裝類。所以Java語言預定義了8種包裝類型:
byte -> Byte
short -> Short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Character
boolean -> Boolean
例如:
Integer.toBinaryString()可得到一個整數的二進制代碼
Integer.toHexString()可得到一個整數的十六進制代碼
Integer.parseInt()可將一個String轉換成int
Integer.toString()可將一個int轉換成String
字符串和數值類型的轉換
字符串 -> 數值: XXX.parseXXX(), 如Integer.parseInt()
數值 -> 字符串: toString(), String.valueOf()
java中的自動裝箱與拆箱
/**
* @author YY哥哥
* java中的自動裝箱與拆箱
* 簡單一點說,裝箱就是自動將基本數據類型轉換為包裝器類型;拆箱就是自動將包裝器類型轉換為基本數據類型。
*/
public class TestDemo {
public static void main(String[] args) {
/**
Integer x= 128; // 裝箱,相當于 Integer.valueOf(128);
int y = x; //相當于 x.intValue() 拆箱
System.out.println(y);
*/
/**
對于–128到127(默認是127)之間的值,被裝箱后,會被放在內存里進行重用
但是如果超出了這個值,系統會重新new 一個對象
*/
Integer x = 200;
Integer y = 200;
/**
注意 == 與 equals的區別
== 它比較的是對象的地址
equals 比較的是對象的內容
*/
if(x==y) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
Java 會對 -128 ~ 127 的整數進行緩存,所以當定義兩個變量初始化值位于 -128 ~ 127 之間時,兩個變量使用了同一地址:
Integer a=123;
Integer b=123;
System.out.println(a==b); // 輸出 true
System.out.println(a.equals(b)); // 輸出 true
當兩個 Integer 變量的數值超出 -128 ~ 127 范圍時, 變量使用了不同地址:
a=1230;
b=1230;
System.out.println(a==b); // 輸出 false
System.out.println(a.equals(b)); // 輸出 true
Java 中 int 和 Integer 的區別
1. int 是基本數據類型,int 變量存儲的是數值。Integer 是引用類型,實際是一個對象,Integer 存儲的是引用對象的地址。
Integer x = new Integer(100);
Integer y = new Integer(100);
System.out.print(x == y); //false
解釋:因為 new 生成的是兩個對象,其內存地址不同。
2. int 和 Integer 所占內存比較:
Integer 對象會占用更多的內存。Integer 是一個對象,需要存儲對象的元數據。但是 int 是一個原始類型的數據,所以占用的空間更少。
3. 非 new 生成的 Integer 變量與 new Integer() 生成的變量比較,結果為 false。
/**
* 比較非new生成的Integer變量與new生成的Integer變量
*/
public class TestDemo {
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。
4. 兩個非 new 生成的 Integer 對象進行比較,如果兩個變量的值在區間 [-128,127] 之間,比較結果為 true;否則,結果為 false。
/**
* 比較兩個非new生成的Integer變量
*/
public class TestDemo {
public static void main(String[] args) {
Integer x1 = 127;
Integer y1 = 127;
System.out.println(x1 == y1);//輸出:true
Integer x2 = 128;
Integer y2 = 128;
System.out.println(x2 == y2);//輸出:false
}
}
解釋:java 在編譯 Integer x1 = 127 時,會翻譯成 Integer x1 = Integer.valueOf(127)。
5. Integer 變量(無論是否是 new 生成的)與 int 變量比較,只要兩個變量的值是相等的,結果都為 true。
/**
* 比較Integer變量與int變量
*/
public class TestDemo {
public static void main(String[] args) {
Integer x1 = 200;
Integer x2 = new Integer(200);
int y = 200;
System.out.println(x1 == y);//輸出:true
System.out.println(x2 == y);//輸出:true
}
}
解釋:包裝類 Integer 變量在與基本數據類型 int 變量比較時,Integer 會自動拆包裝為 int,然后進行比較,實際上就是兩個 int 變量進行比較,值相等,所以為 true。
謝謝大家關注
總結
以上是生活随笔為你收集整理的float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀怎么修改实名认证
- 下一篇: 电脑入门完全自学手册_3DMAX零基础入