android equals == 区别,"equals"和"=="的区别

本文探讨了Java中字符串对象的创建与内存管理,重点解析了`new String()`与直接赋值的区别,以及`==`和`equals()`在比较字符串时的不同。讲解了堆栈内存的概念,并阐述了字符串常量池的作用。同时,强调了局部变量和对象实例在内存中的存储位置对程序性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String str1 = "android";

String str2 = "android";              // T

String str3 = new String("android");  // F

String str4 = "and" + "riod";         // T

String str5 = "and";                  // F

str5 = str5 + "riod";

关键在于。。。你要理解s1=new String("we are students");

s2="We are students";

这两个是不一样的。。。。new是用新建一个对象的方法。。。。而后一种是放在常量池中的。。。你一下次再用这种方法去创建的时候。。。就会去常量池里面找,所以

s2="We are students";

s3="We are students";

这两个是相同的。。。指向常量池中的"We are students";。。。

而s1=new String("we are students");

=new String(s1);

这两个是不同的对象。。。。。尽管他们的内容是一样的。。。

就像有两个人。。。他们的名字是相同的。。。。但是并不是一样的人。。。。

堆栈:首先我们要明确堆和栈的概念,在系统内存中将局部变量存放在栈中,将new出来的对象以及一些方法(类的代码信息,static变量以及常量池)放在堆中。

现在就说一下==和equals的比较的实质:==比较的是变量的地址而equals比较的是变量的内容,那么根据上面所说的可以得到==比较的是变量存储在栈中的内容,equals比较的是变量存储在堆中的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值