1. 程式人生 > >Tostring 的用法

Tostring 的用法

uncaught print abc 對象類型 用法 undefined ringbuf valid 文件

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 的用法