Object是一个抽象类,他有很有方法,其中的toString方法是我们常见的一个方法,我们可以看这段代码

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
System.out.println("love "+new ToStringTest());
ToStringTest a=new ToStringTest();
a.i++;
System.out.println("me "+a.i);
}
public String toString(){
System.out.print("I ");
return "java";
}
}

其执行结果为:

那么为什么会出现上面的运行结果?

首先我们可以在JAVA API文档中查找Object类里面的toString方法;

看不懂了?没关系,我们来实现一下:

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
System.out.println(new ToStringTest());
}
}

总结:当我们直接调用对象的时候会输出 类名@对象的哈希码

再来一个测试

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
System.out.println(new ToStringTest());
}
public String toString(){
return "java";
}
}

总结:当我们重写toString方法时会return返回对应的字符串

再来一个测试

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
System.out.println("love "+new ToStringTest());
}
public String toString(){
return "java";
}
}

总结:toString方法可以通过+和其他类型连接起来而且是转为字符串类型连接

这样我们就有头绪了,再看这个测试

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
System.out.println("love "+new ToStringTest());
}
public String toString(){
System.out.print("I ");
return "java";
}
}

总结:在输出之前会调用toString方法,解析这个方法时会先输出 I 之后再输出 love java

package com.com.day1;

public class ToStringTest {
static int i=1;
public static void main(String args[]){
ToStringTest a=new ToStringTest();
a.i++;
System.out.println("me "+a.i);
}
public String toString(){
System.out.print("I ");
return "java";
}
}

有个疑问?为何这个地方ToStringTest a=new ToStringTest()没有调用这个方法?

总结:在用System.out.println();z输出该类的时候(有点想c++cout的重载),会调用toString函数。将该类与String类拼接时也会调用该类。

最新文章

  1. 为什么axios请求接口会发起两次请求
  2. cocos2d-x 3.0 事件分发机制
  3. 初学JQuery笔记
  4. 基于Typecho CMS框架开发大中型应用
  5. [swustoj 917] K-lucky-number
  6. Templates
  7. [Leetcode][Python]29: Divide Two Integers
  8. HDU 3336 Count the string KMP
  9. spring容器启动的加载过程(二)
  10. python变量存储
  11. Java-Runoob-高级教程-实例-方法:14. Java 实例 – Varargs 可变参数使用
  12. 【Acm】算法之美—Anagrams by Stack
  13. OC实用转换model的工具
  14. STL 源代码剖析 算法 stl_algo.h -- partial_sort / partial_sort_copy
  15. 作业要求20181016-3 Alpha阶段第1周/共2周 Scrum立会报告+燃尽图 01
  16. 转:函数指针数组的妙用(I)
  17. jsp servlet基础复习 Part2--GET,Post请求
  18. Android学习笔记_48_若水新闻客户端源码剖析
  19. 换行符在textarea、div、pre中的区别
  20. appium键盘处理

热门文章

  1. 5.Python网络编程_通过继承实现多线程
  2. luoguP4404缓存交换
  3. Pwn-Smashes
  4. 用java写爬虫
  5. CME Futures & Options Order Book
  6. 解决Python开发中,Pycharm中无法使用中文输入法问题
  7. 【oracle】查看表空间信息
  8. SDOI2019退役记
  9. Java实现输出“杨辉三角”
  10. HTML连载40-盒子宽度和高度的练习、box-sizing属性