对toString方法的几点问题
1、toString方法在Object类里的作用是:打印这个类的字符串表现形式。
老师,就是说,Object类的对象调用了toString,打印的就是Objcet的字符串?
字符串是:类名+@+内存地址,这个内存地址指的是Object类的对象地址?还是Object类本身自己的地址?
2、老师,Object类中的equals方法和toString方法,它们的方法是什么样子的?请把它们粘贴出来,我加深下对这块知识的印象,不然老是重写它们,但是都不知道它们本身是什么样子。
3、toString方法是默认在每个类里导入吗?因为在课程里,有这样的两种toString的写法:
System.out.println(one.toString());
System.out.println(one);
我很纳闷,toString默认加载在对象one后面,它是怎么认识到此时需要默认加载,或者不需要加载的?
正在回答
你好!对于第一点你的理解是对的。对于第二点,其实就是在不重写toString()方法时的输出结果。
关于第二点,你可以看一下如下代码的输出结果
public class Animal { private String name; private int age; public Animal() {} public Animal(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Test2 { public static void main(String[] args) { Animal animal=new Animal("animal",4); System.out.println(animal); } }
运行效果如下:
因为Animal没有重写toString()方法,所以运行效果就是上述的样子。@前面的是类名,也就是getClass().getName()得到的结果,后面的十六进制数,就是hashCode值转换为16进制数字的结果。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1、是Object类的对象地址的地址,这里同学不需要纠结,这里记住,如果引用类重写了toStirng方法,输入改对象就好默认去调用重写好的toString方法就可以了,如果没有重写就会输出地址值,记住就可以了。
2、,不建议同学在现阶段去看源码,现阶段同学最重要的任务就是学会使用呦。
Object中的equals方法:
toString方法
3、同学重写后输出时会默认加载toString方法,这是底层代码加载的哦。同学这里记住就可以。
如果没有重写toString方法,就会调用Object中没有重写的toString方法。
如果我的回答解决了你的问题,请采纳,祝学习愉快.
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星