疑问:为什么我打印对象时 结果是一串字符?
原因: 对应类没有重写 toString() 方法。
额......
这会儿又有疑问了,我的类都没有继承(extends)其他类,何来重写一说 ?
答:因为每一个java类创建之后都会默认隐式继承 Object 类,换句话说:Object 类是所有java类的祖宗类,不管你创建的类 名义上认不认这个祖宗(手动继承 Object 类),实际上你还是改变不了它是你创建的类的祖宗的事实。
让我们来看看 Object 类 的toString的代码实现:
Object 类中 toString 方法return的是 => getClass().getName()(你的类名) + “@” + Integer.toHexString(hashCode())(哈希码)。
所以当我们的类没有重写 toString 的是时候,就会打印 出一串类名和哈希码,所以当我想要打印内容的时候就要重写 祖宗类(Object ) 中的toString方法,如下:
又有疑问了: 为啥我的类没有重写toString之前 student.getName() 的打印结果是文本内容呢 ?
啊这......, 等我一会,我去搬救兵......
答: 从图中可知, getName 是获取一个 String 类型的数据,而String 类已经重写了toString方法(具体一源代码可以去了解了解)。所以当我们打印的是字符串时,出来的是我们预期的结果。
总计:
就是一句话 “没有重写 Object 类 中的 toString方法是 默认打印出来的就是 类名和哈希码”。
!!! 若有不对的地方,请不要俺面子,直接指出来,让我无地自容 !!!