java判断字符相等_Java:判断字符串相等

首先要知道一点是==操作判断的是:是否a,b两个对象或基本类型指向同一内存区域

String的底层实现是

private final value[]

String实例化时,实际上是通过System.arraycopy划分一段连续内存保存char数组。

new String("abc")实际上不推荐这种方法初始化String,实际实现起来比 a = "abc"多了一个步骤,底层步骤是

划分内存空间,创建临时数组temp

temp[0] = 'a';temp[1] = 'b';temp[2] = 'c';

创建数组value ,将value所指内存空间指向temp指向的内存空间,即 &value = &temp(若使用a = "abc"则不需要这步)

intern方法是jdk1.5提供的方法,用于内存优化的,相同String引用共同内存空间,实际上就是上述的第三步。这里若要a,b相等,可以写为

String a = "abc";

String b = "abc".intern(); 或者String b = a.intern();

实际上 进行的操作就是上述的第三步,即 b = a;

String b = "abc"实际的底层实现是:

划分内存空间,创建数组value

value[0] = a.value[0];value[1] = a.value[0]';value[2] = a.value[0];

第二步中,String b中value[0]中的String a中的value[0]实际中指向的是同一个内存地址,因此实际上b.value[0] = a.value[0] = 'a',但b.value 不等于a.value,根本原因在于指向内存区域不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值