Java包裝類
阿新 • • 發佈:2019-04-27
常量 wrapper 字符型 nbsp 技術分享 class 常量數組 http pri
一.什麽是包裝類
Java中的基本數據類型沒有方法和屬性,而包裝類就是為了讓這些擁有方法和屬性,實現對象化交互。
數值型包裝類都繼承至Number,而字符型和布爾型繼承至Object。
二.基本數據和包裝類之間的轉換
裝箱:基本數據類型轉換為包裝類;
拆箱:包裝類轉換為基本數據類型。
1 package com.swpu; 2 3 public class WrapperTestOne { 4 public static void main(String[] args){ 5 //1.自動裝箱 6View Codeint t1=1; 7 Integer t2=t1; 8 //2.手動裝箱 9 Integer t3=new Integer(t1); 10 System.out.println("int類型t1="+t1); 11 System.out.println("自動裝箱,Integer類型對象t2="+t2); 12 System.out.println("手動裝箱,Integer類型t3="+t3); 13 14 15 //1.自動拆箱 16 int t4=t2; 17 //2.手動拆箱 18 //通過intValue()方法返回int值,還可以利用其他方法裝換為其他類型 19 int t5=t2.intValue(); 20 System.out.println("自動拆箱,int型t4="+t4); 21 System.out.println("手動拆箱,int型t5="+t5); 22 } 23 24 }
三.基本數據類型和包裝類的轉換
通過包裝類Integer.toString()將整型轉換為字符串;
通過Integer.parseInt()將字符串轉換為int類型;
通過valueOf()方法把字符串轉換為包裝類然後通過自動拆箱。
1 package com.swpu; 2 3 public class WrapperTestTwo { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 //基本數據類型轉換為字符串 8 int t1=12; 9 String t2=Integer.toString(t1); 10 System.out.println("int轉換為String:"+t2); 11 //字符串轉換為基本數據類型 12 //通過paerInt方法 13 int t3=Integer.parseInt(t2); 14 //通過valeOf,先把字符串轉換為包裝類然後通過自動拆箱 15 int t4=Integer.valueOf(t2); 16 System.out.println("t3:"+t3); 17 System.out.println("t4:"+t4); 18 19 } 20 21 }View Code
四.包裝類知識
包裝類對象的初始值為null(是一個對象);
包裝類對象之間的比較:
1 package com.swpu; 2 3 public class WrapperTestTre { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Integer one=new Integer(100); 8 Integer two=new Integer(100); 9 //one和對two是兩個不同的對象,==在比較對象時比較的是內存地址,兩個是不同的空間,放的值相同 10 System.out.println("one==two:"+(one==two)); 11 Integer three=100;//自動裝箱 12 /* Integer three=Integer.valueOf(100); 13 * 這時緩存區沒有,就會構造一個 14 */ 15 System.out.println("three==100:"+(three==100));//自動拆箱 16 Integer four=100; 17 /*實際執行的是 Integer four=Integer.valueOf(100); 這時緩存區有,就會直接取 18 * Java為了提高拆裝箱效率,在執行過程中提供了一個緩存區(對象池)【類似於常量數組】, 19 * 如果傳入的參數是,-128<參數<127會直接去緩存查找數據,如果有久直接產生,如果沒有就隱式調用new方法產生 20 */ 21 22 System.out.println("three==four:"+(three==four)); 23 Integer five=200; 24 System.out.println("five==200:"+(five==200)); 25 Integer six=200; 26 //註:這裏為200,超出了緩存區範圍,所以都需要構建 27 System.out.println("five==six:"+(five==six)); 28 /* 29 * 輸出: 30 * one==two:false 31 three==100:true 32 three==four:true 33 five==200:true 34 five==six:false 35 36 */ 37 } 38 39 }View Code
註:
Java中除了float和double的其他基本數據類型,都有常量池(註:Python中int【-5~256,257 這個整數對象是區分作用域的,它只有在相同的作用域, 內存地址才會相同
】,str,byte也有)
Java包裝類