Tostring 的用法

Posted admindu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tostring 的用法相关的知识,希望对你有一定的参考价值。

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 的用法的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 加载源图像固定用法(代码片段,不全)

Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段

Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段

方便调试使用的代码片段

记录C#常用的代码片段

SQL Select 语句的用法