JAVA基础——toString()方法,java基础面试笔试题


我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。
扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。
推荐文章:Java 面试知识点解析Mysql优化技巧(数据库设计、命名规范、索引优化

 

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

 

 

 


转载:https://www.cnblogs.com/huan-guo/p/8404891.html

推荐内容:
Java基础面试题,JavaWeb面试题
Java面试通关要点汇总集
java对list进行排序
java面试题1000道
40个Java多线程面试问题
一次 Java 内存泄漏的排查
阿里java面试题
JAVA多线程面试题
【原创】分布式之消息队列复习精讲
Java 延迟队列使用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值