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比较的是变量存储在堆中的内容


更多相关文章

  1. Android系统编译环境变量的设置
  2. android设置EditText不可编辑内容,响应点击事件
  3. androidx.core.widget.NestedScrollView 内容显示不全
  4. jdk及android studio环境变量配置
  5. Windows如何配置Android的ADB环境变量
  6. android Listview相关内容

随机推荐

  1. Android全局变量的设置
  2. Windows 下BlackBerry & Google Android(
  3. android 保存bitmap到SD卡
  4. android添加联系人(直接添加到联系人数据
  5. Android(安卓)FragmentTabHost轻松实现微
  6. android 2.2 apidemos 赏析笔记 5
  7. Android(安卓)Circular Progress Button
  8. android 4.0 HttpURLConnection. getInpu
  9. android 遍历控件
  10. android 判断字符串是否是数字