返回String类型的方法,返回的是一个对象还是一个常量?

返回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的方法返回的是一个常量?如果不是的话为什么这段代码没有问题呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,非常抱歉之前是老师描述有一些小问题,同学可以参考如下思路来理解:

    1、String类型是一种特殊的对象类型,

String  s1="abc";   这样是直接在常量池中创建abc,如果有新的声明创建abc,它会直接指向常量池中已存在的abc,比如:

http://img1.sycdn.imooc.com//climg/5f23bd99091d15f904290208.jpg

此时s1和s2都指向常量池中的同一个对象,所以地址相同,此时的s1表示的abc是常量。

    如果是String  s1=new  String("abc"); 的话,它会直接new一个新的对象,对应值为abc,此时再声明一个abc的对象,它就会指向一个新的对象,比如:

http://img1.sycdn.imooc.com//climg/5f23be2a0960aa0a04600228.jpg

如上所示,s1和s2指向不同的对象,此时它的地址就是不一样的,此时的s1表示的是对象。

关于String类型在后面Java字符串中有具体的讲解。

http://img1.sycdn.imooc.com//climg/5f23bec509dc393201870092.jpg

    2、根据同学的贴出的部分代码,猜测同学是直接这样赋值的

http://img1.sycdn.imooc.com//climg/5f23bf0509e5df3003630060.jpg

http://img1.sycdn.imooc.com//climg/5f23c0890903e74e04820244.jpg

如上所示的String类型的声明方式类似于上面描述的第一种,所以==判断两个get方法返回的值,结果是true

因为String类型是一种特殊的对象类型,所以建议同学使用equals方法来比较。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2020-07-31 11:54:22

同学你好,返回String类型的方法,返回的是一个对象。

在代码中,使用==判断两个get方法返回的值,结果是true,建议同学将自己的完整的代码贴出到"我要回答"的代码区,老师来复制测试一下,便于定位问题。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 能掐会算 #1
    我想问的是既然get方法返回的是string对象,我用==判断两个不同的对象,为什么返回的是true
    2020-07-31 11:56:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师