java分装_Java ——Number Math 类 装箱 拆箱 代码块
本節重點思維導圖
當需要使用數字的時候,我們通常使用內置數據類型,如:byte、int、long、double 等
int a = 5000;float b = 13.65f;byte c = 0x4a;
需要使用對象,而不是內置數據類型的情形。Java 為每一個內置數據類型提供了對應的包裝類。
所有的包裝類(Integer、Long、Byte、Double、Float、Short)都是抽象類 Number 的子類
當內置數據類型被當作對象使用的時候,編譯器會把內置類型裝箱為包裝類。相似的,編譯器也可以把一個對象拆箱為內置類型
public classTest{public static voidmain(String args[]){
Integer x= 5;
x= x + 10;
System.out.println(x);
}
}/*當 x 被賦為整型值時,由于x是一個對象,所以編譯器要對x進行裝箱。然后,為了使x能進行加運算,所以要對x進行拆箱。*/
Java Math類
包含了用于執行基本數學運算的屬性和方法,如初等指數、對數、平方根和三角函數。
Math 的方法都被定義為 static 形式,通過 Math 類可以在主函數中直接調用。
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的余弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println(Math.PI);
Math方法
/***@authorDale
* java中的自動裝箱與拆箱
* 簡單一點說,裝箱就是自動將基本數據類型轉換為包裝器類型;拆箱就是自動將包裝器類型轉換為基本數據類型。*/
public classNumber {public static voidmain(String[] args) {/**Integer i1 = 128; // 裝箱,相當于 Integer.valueOf(128);
int t = i1; //相當于 i1.intValue() 拆箱
System.out.println(t);*/
/**對于–128到127(默認是127)之間的值,被裝箱后,會被放在內存里進行重用
但是如果超出了這個值,系統會重新new 一個對象*/Integer i1= 200;
Integer i2= 200;/**注意 == 與 equals的區別
== 它比較的是對象的地址
equals 比較的是對象的內容*/
if(i1==i2) {
System.out.println("true");
}else{
System.out.println("false");
}
}
}
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 classTest {public static voidmain(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 classTest {public static voidmain(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 classTest {public static voidmain(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。
分裝類深入
public static voidmain(String[] args) {int a = 88;
System.out.println(a+ 3);
System.out.println(a- 3);
System.out.println(a* 3);
System.out.println(a/ 3);
System.out.println(a% 3);
System.out.println(a++);
System.out.println(--a);
System.out.println(a>> 3);
Integer b= 4;
System.out.println(b.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);int max = Integer.min(23, -89);
System.out.println(max);
String binaryString= Integer.toBinaryString(24);
System.out.println(binaryString);
System.out.println(Integer.toHexString(123345));char aa = Character.toUpperCase('a');
System.out.println(aa);
}
代碼塊
所有的Java語句都必須寫到代碼塊中,聲明語句除外。
靜態代碼塊
static{
}
構造代碼塊
{
}
結論:
??只要程序啟動,就會運行靜態代碼塊中的代碼
??靜態代碼塊只運行一次
??當定義類的對象時,系統會依次調用:靜態代碼塊---構造代碼塊---構造方法
其中,靜態代碼塊只調用一次,構造代碼塊和構造方法是每new一次就調用一次
public classDemo {publicDemo() {
System.out.println("第三個調用,new一次,調用一次");
}
{
System.out.println("第二個調用,new一次,調用一次");
}static{
System.out.println("第一個調用,且只調用一次");
}public static voidmain(String[] args) {newDemo();newDemo();newDemo();
}
}
總結
以上是生活随笔為你收集整理的java分装_Java ——Number Math 类 装箱 拆箱 代码块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java二叉树插入节点_[javaSE]
- 下一篇: java插入数据库字段过长_数据库插入数