打印对象和toString方法

[java]  view plain  copy
  1.    
  2. class Person  
  3. {  
  4.     private String name;  
  5.     public Person(String name)  
  6.     {  
  7.         this.name=name;  
  8.     }  
  9. }  
  10. public classPrintObject {  
  11.     public static voidmain(String[] args)  
  12.     {  
  13.         Person2 p=new Person("ping");  
  14.         System.out.println(p.toString());  
  15.     }  
  16.    
  17. }  


上面程序创建了一个Person对象,然后使用System.out.println()方法输出Person对象,结果如下:

Person@15db9742


System.out的println方法只能在控制台输出字符串,而Person实例是一个内存中的对象,怎么能直接转换为字符串输入呢?当使用该方法输出Person对象时,实际上输出Person对象的toString()方法的返回值,也就是这面代码效果相同

System.out.println(p);

System.out.println(p.toString());

toString方法是Object类里的一个实例方法,所有Java类都是object类的子类,因此所有Java对象都具有toString方法。

不仅如此,所有Java对象都可以和字符串进行连接运算,当Java对象和字符串进行连接运算时,系统自动调用Java对象toString()方法返回值和字符串进行连接运算下面代码效果相同

String pStr=p+””;

StringpStr=p.toString()+””;

  toString()方法是一个非常特殊的方法,是一个“自我描述”方法,该方法通常用于实现当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象具有的状态信息。

  Object类提供的toString()方法总是返回该对象实现类的”类名+@+hashCode”值,这个返回值不能真正实现“自我描述”功能,因此我们可以重写object的toString()方法。

 

[java]  view plain  copy
  1. class Apple1  
  2. {  
  3.     private String color;  
  4.     private double weight;  
  5.     public Apple1(String color,double weight)  
  6.     {  
  7.         this.color=color;  
  8.         this.weight=weight;  
  9.     }  
  10.    
  11. public StringtoString()  
  12. {  
  13.     return "Apple["+color+",weight:"+weight+"]";  
  14. }  
  15. }  
  16.    
  17. public classToStringTest {  
  18.     public static voidmain(String[] args)  
  19.     {  
  20.     Apple1 a=new Apple1("红色"5.68);  
  21.     System.out.println(a);  
  22.     }  
  23.      
  24.      
  25.      
  26. }  


运行结果

Apple[color=红色,weight=5.68]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,我们可以使用 `toString` 方法来查看一个对象是否有自己的 `toString` 方法。具体来说,我们可以通过以下两种方式来判断一个对象是否有自己的 `toString` 方法: 1. 使用 `typeof` 运算符判断对象的类型是否为函数。因为在 JavaScript 中,函数是一种特殊的对象,如果一个对象是函数,那么它就有自己的 `toString` 方法。 ```javascript var obj = {}; console.log(typeof obj.toString === "function"); // 输出 true ``` 在这个例子中,我们定义了一个空对象 `obj`,然后使用 `typeof obj.toString` 来判断它的 `toString` 方法是否存在。由于 `obj` 并不是函数,因此 `typeof obj.toString` 的结果是一个字符串 `"object"`,而不是 `"function"`。因此,上面的代码会输出 `false`。 2. 使用 `Object.prototype.toString` 方法来判断对象的类型是否为 `[object Object]`。如果一个对象的类型是 `[object Object]`,那么它就没有自己的 `toString` 方法。 ```javascript var obj = {}; console.log(Object.prototype.toString.call(obj) === "[object Object]"); // 输出 true ``` 在这个例子中,我们使用 `Object.prototype.toString` 方法来判断对象 `obj` 的类型是否为 `[object Object]`。由于 `obj` 的类型确实是 `[object Object]`,因此上面的代码会输出 `true`。 需要注意的是,上面的方法只能判断对象是否有自己的 `toString` 方法,但不能判断这个方法是否有效。如果一个对象有自己的 `toString` 方法,但这个方法并没有实现正确的转换逻辑,那么在打印这个对象时仍然可能出现意料之外的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值