"equals"和"=="的区别
16lz
2021-01-23
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=newString("wearestudents");s2="Wearestudents";这两个是不一样的。。。。new是用新建一个对象的方法。。。。而后一种是放在常量池中的。。。你一下次再用这种方法去创建的时候。。。就会去常量池里面找,所以s2="Wearestudents";s3="Wearestudents";这两个是相同的。。。指向常量池中的"Wearestudents";。。。而s1=newString("wearestudents");=newString(s1);这两个是不同的对象。。。。。尽管他们的内容是一样的。。。就像有两个人。。。他们的名字是相同的。。。。但是并不是一样的人。。。。
堆栈:首先我们要明确堆和栈的概念,在系统内存中将局部变量存放在栈中,将new出来的对象以及一些方法(类的代码信息,static变量以及常量池)放在堆中。
现在就说一下==和equals的比较的实质:==比较的是变量的地址而equals比较的是变量的内容,那么根据上面所说的可以得到==比较的是变量存储在栈中的内容,equals比较的是变量存储在堆中的内容。
更多相关文章
- Android系统编译环境变量的设置
- android设置EditText不可编辑内容,响应点击事件
- androidx.core.widget.NestedScrollView 内容显示不全
- jdk及android studio环境变量配置
- Windows如何配置Android的ADB环境变量
- android Listview相关内容