• 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的性能

     

  • 相关阅读:
    git 更改项目名称
    C语言 函数和程序结构 宏替换#define
    git commit
    git patch
    CortexM3/4 一些调试技巧
    PendSV和SYSTICK
    TencentOS tiny 中断嵌套
    smp raw_spinlock_t
    20212022年寒假学习进度15
    20212022年寒假学习进度22
  • 原文地址:https://www.cnblogs.com/dhm520/p/8460753.html
Copyright © 2020-2023  润新知