java string引用类型_[原创]java中String类型是引用类型

本文探讨了==操作符与equals方法在比较对象值时的不同,==关注内存地址,适用于基本类型和引用变量,而equals比较对象内容。通过实例解析String对象的创建与比较,揭示两者在Java中的实际应用和差异。
摘要由CSDN通过智能技术生成

"=="和 equals方法究竟有什么区别?

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存

储的数值是否相同, 要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作

符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存, 对象本身占用一块

内存( 堆内存),变量也占用一块内存,例如 Objet obj = new Object();变量 obj 是一个内存,

new Object()是另一个内存,此时,变量 obj 所对应的内存中存储的数值就是对象占用的那

块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即

要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相

同,它比较的两个对象是独立的。

String a=new String("foo");

String b=new String("foo");

两条 new 语句创建了两个对象,然后用 a/b 这两个变量分别指向了其中一个对象,这是两

个不同的对象,它们的首地址是不同的,即 a 和 b 中存储的数值是不相同的,所以,表达

式 a==b 将返回 false,而这两个对象中的内容是相同的,所以,表达式 a.equals(b)将返回

true。

java中String是引用数据类型

为什么String str="scce";

String str2="scce";

str==str2返回true而String str2=new String("scce"); str==str2返回false

String str="scce"; //这是在静态数据区创建了一个对象

String str2="scce"; //创建静态数据对象是先在静态数据区查,如果存在则不创建新的,保证静态数据区中的数据只有一份,

str==str2返回true //指向同一个对象

String str2=new String("scce"); str==str2返回false //在堆中创建一个对象,引用值当然不同

Stirng特殊在如果静态数据区中存在,那么不创建新的对象,而是指向这个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值