基本資料型別和包裝類、String類的轉換&toString方法&instanceof運算子
基本資料型別和包裝類、String類的轉換&toString方法&instanceof運算子
1.包裝類
- Java語言是一個面向物件的語言,但是Java中的基本資料型別卻是不面向物件的,所以設計類時為每一個基本資料型別設計了一個對應類進行代表,這樣八個和基本資料型別對應的類統稱為包裝類(Wrapper Class)。包裝類可以使用方法,也解決了“集合不允許存放基本資料型別資料,存放數字時,要用包裝型別”等問題。
請看下面倆幅圖:
JDK1.5提供了自動裝箱和自動拆箱功能。所謂自動裝箱就是把一個基本資料型別直接賦值給對應的包裝類變數,或者賦值給Object變數(Object是所以類的父類,子類物件可以直接賦值給父類變數)。
//int型別會自動轉換為Integer型別
int m = 12;
Integer in = m;
//Integer型別會自動轉換為int型別
int n = in;
//把一個boolean的基本資料型別轉換為Object型別
Object booleanObject = true;
- 基本資料型別—>String型別
方法一:使用連線一個空字串,例如 基本資料型別+“” ;
方法二:靜態方法 String.valueOf(),具體有:
String.valueOf(boolean b) : 將 boolean 變數 b 轉換成字串
String.valueOf(char c) : 將 char 變數 c 轉換成字串
String.valueOf(char[] data) : 將 char 陣列 data 轉換成字串
String.valueOf(char[] data, int offset, int count) : 將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串
String.valueOf(double d) : 將 double 變數 d 轉換成字串
String.valueOf(float f) : 將 float 變數 f 轉換成字串
String.valueOf(int i) : 將 int 變數 i 轉換成字串
String.valueOf(long l) : 將 long 變數 l 轉換成字串
String.valueOf(Object obj) : 將 obj 物件轉換成 字串, 等於 obj.toString()方法三:呼叫包裝類的toString();String str = Integer.toString(10);
- String型別—–>基本資料型別
int a = Integer.parseInt(String s); 返回int
parseXXX(String s);
2.toString()方法
- public String toString()返回該物件的字串表示。通常,toString 方法會返回一個“以文字方式表示”此物件的字串。結果應是一個簡明但易於讀懂。建議所有子類都重寫此方法。
- Object 類的 toString 方法返回一個字串,該字串由類名(物件是該類的一個例項)、at標記符“@”和此物件雜湊碼的無符號十六進位制表示組成。換句話說,該方法返回一個字串,它的值等於:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
- 如果我們希望使用者能過對自定義類實現“自我描述”的功能,就必須寫Object類的toString()方法。
3.instanceof運算子
- instanceof運算子前一個運算元通常是一個引用型別變數,後一個運算元通常是一個類(可以是介面,可以把介面理解成一個特殊的類),它用於判斷前面的物件是否是後面的類,或者其類的子類、實現類的例項。如果是,則返回true,否則返回false。
interface A{}
class B implements A{
}
class C extends B {
}
class instanceoftest {
public static void main(String[] args){
A a=null;
B b=null;
boolean res;
System.out.println("instanceoftest test case 1: ------------------");
res = a instanceof A;
System.out.println("a instanceof A: " + res);
res = b instanceof B;
System.out.println("b instanceof B: " + res);
System.out.println("/ninstanceoftest test case 2: ------------------");
a=new B();
b=new B();
res = a instanceof A;
System.out.println("a instanceof A: " + res);
res = a instanceof B;
System.out.println("a instanceof B: " + res);
res = b instanceof A;
System.out.println("b instanceof A: " + res);
res = b instanceof B;
System.out.println("b instanceof B: " + res);
System.out.println("/ninstanceoftest test case 3: ------------------");
B b2=(C)new C();
res = b2 instanceof A;
System.out.println("b2 instanceof A: " + res);
res = b2 instanceof B;
System.out.println("b2 instanceof B: " + res);
res = b2 instanceof C;
System.out.println("b2 instanceof C: " + res);
}
}
/*
result:
instanceoftest test case 1: ------------------
a instanceof A: false
b instanceof B: false
instanceoftest test case 2: ------------------
a instanceof A: true
a instanceof B: true
b instanceof A: true
b instanceof B: true
instanceoftest test case 3: ------------------
b2 instanceof A: true
b2 instanceof B: true
b2 instanceof C: true