返回String类型的方法,返回的是一个对象还是一个常量?
public boolean equals(Object obj){ Car car = (Car)obj; boolean flag = false; if(this.getColor() == car.getColor() && this.getUserName() == car.getUserName()) flag = true; return flag; }
这段代码中我用==判断两个get方法返回的值,结果是true,那么是不是可以理解成返回类型是String的方法返回的是一个常量?如果不是的话为什么这段代码没有问题呢?
正在回答
同学你好,非常抱歉之前是老师描述有一些小问题,同学可以参考如下思路来理解:
1、String类型是一种特殊的对象类型,
String s1="abc"; 这样是直接在常量池中创建abc,如果有新的声明创建abc,它会直接指向常量池中已存在的abc,比如:
此时s1和s2都指向常量池中的同一个对象,所以地址相同,此时的s1表示的abc是常量。
如果是String s1=new String("abc"); 的话,它会直接new一个新的对象,对应值为abc,此时再声明一个abc的对象,它就会指向一个新的对象,比如:
如上所示,s1和s2指向不同的对象,此时它的地址就是不一样的,此时的s1表示的是对象。
关于String类型在后面Java字符串中有具体的讲解。
2、根据同学的贴出的部分代码,猜测同学是直接这样赋值的
如上所示的String类型的声明方式类似于上面描述的第一种,所以==判断两个get方法返回的值,结果是true
因为String类型是一种特殊的对象类型,所以建议同学使用equals方法来比较。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星