Tostring 的用法
toString()方法返回反映這個對象的字符串
因為toString方法是Object裏面已經有了的方法,而所有類都是繼承Object,所以“所有對象都有這個方法”。
它通常只是為了方便輸出,比如System.out.println(xx),括號裏面的“xx”如果不是String類型的話,就自動調用xx的toString()方法
總而言之,它只是sun公司開發java的時候為了方便所有類的字符串操作而特意加入的一個方法
一toString()方法
【1】undefined和null沒有toString()方法
undefined.toString();//錯誤 null.toString();//錯誤
【2】布爾型數據true和false返回對應的‘true‘和‘false‘
true.toString();//‘true‘ false.toString();//‘false‘ Boolean.toString();//"function Boolean() { [native code] }"
【3】字符串類型原值返回
‘1‘.toString();//‘1‘ ‘‘.toString();//‘‘ ‘abc‘.toString();//‘abc‘ String.toString();//"function String() { [native code] }"
【4】數值類型的情況較復雜
Number.toString();//"function Number() { [native code] }"
1、正浮點數及NaN、Infinity加引號返回
1.23.toString();//‘1.23‘ NaN.toString();//‘NaN‘ Infinity.toString();//‘Infinity‘
2、負浮點數或加‘+‘號的正浮點數直接跟上.toString(),相當於先運行toString()方法,再添加正負號,轉換為數字
+1.23.toString();//1.23 typeof +1.23.toString();//‘number‘ -1.23.toString();//-1.23 typeof -1.23.toString();//‘number‘
3、整數直接跟上.toString()形式,會報錯,提示無效標記,因為整數後的點會被識別為小數點
0.toString();//Uncaught SyntaxError: Invalid or unexpected token
因此,為了避免以上無效及報錯的情況,數字在使用toString()方法時,加括號可解決
(0).toString();//‘0‘ (-0).toString();//‘0‘ (+1.2).toString();//‘1.2‘ (-1.2).toString();//‘-1.2‘ (NaN).toString();//‘NaN‘
此外,數字類型的toString()方法可以接收表示轉換基數(radix)的可選參數,如果不指定此參數,轉換規則將是基於十進制。同樣,也可以將數字轉換為其他進制數(範圍在2-36)
var n = 17; n.toString();//‘17‘ n.toString(2);//‘10001‘ n.toString(8);//‘21‘ n.toString(10);//‘17‘ n.toString(12);//‘15‘ n.toString(16);//‘11‘
【5】對象Object類型及自定義對象類型加括號返回[object Object]
{}.toString();//報錯,Unexpected token . ({}).toString();//[object Object] ({a:123}).toString();//[object Object] Object.toString();//"function Object() { [native code] }"
function Person(){ this.name = ‘test‘; } var person1 = new Person(); person1.toString();//"[object Object]"
二:toString()方法方法的用途就是為了方便操作,所以在文件操作裏面可用可不用
例子1:
public class Orc
{
public static class A
{
public String toString()
{
return "this is A";
}
}
public static void main(String[] args)
{
A obj = new A();
System.out.println(obj);
}
}
如果某個方法裏面有如下句子:
A obj=new A();
System.out.println(obj);
會得到輸出:this is A
例子2:
public class Orc
{
public static class A
{
public String getString()
{
return "this is A";
}
}
public static void main(String[] args)
{
A obj = new A();
System.out.println(obj);
System.out.println(obj.getString());
}
}
會得到輸出:xxxx@xxxxxxx的類名加地址形式
System.out.println(obj.getString());
會得到輸出:this is A
看出區別了嗎,toString的好處是在碰到“println”之類的輸出方法時會自動調用,不用顯式打出來。
例3
值得註意的是, 若希望將StringBuffer在屏幕上顯示出來, 則必須首先調用toString方法把它變成字符串常量, 因為PrintStream的方法println()不接受StringBuffer類型的參數.
1 public class Zhang 2 3 { 4 5 public static void main(String[] args) 6 7 { 8 9 StringBuffer MyStrBuff1 = new StringBuffer(); 10 11 MyStrBuff1.append("Hello, Guys!"); 12 13 System.out.println(MyStrBuff1.toString()); 14 15 MyStrBuff1.insert(6, 30); 16 17 System.out.println(MyStrBuff1.toString()); 18 19 } 20 21 }
toString()方法在此的作用是將StringBuffer類型轉換為String類型.
1 public class Zhang 2 { 3 public static void main(String[] args) 4 { 5 String MyStr = new StringBuffer().append("hello").toString(); 6 MyStr = new StringBuffer().append(MyStr).append(" Guys!").toString(); 7 System.out.println(MyStr); 8 } 9 }
三:關於String ,StringBuffer和StringBuilder的性能
Tostring 的用法