栈区  存  引用和基本类型,不能存对象,而堆区存对象。==是比较地址,equals()比较对象内容。

(1) String str1 = "abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd"";如果后来又定义了字符串变量 str2 = "abcd",则直接将str2引用指向String池中已经存在的“abcd”,不再重新创建对象;当str1进行了赋值(str1=“abc”),则str1将不再指向"abcd",而是重新指String池中的"abc",此时如果定义String str3 = "abc",进行str1 == str3操作,返回值为true,因为他们的值一样,地址一样,但是如果内容为"abc"的str1进行了字符串的+连接str1 = str1+"d";此时str1指向的是在堆中新建的内容为"abcd"的对象,即此时进行str1==str2,返回值false,因为地址不一样。

(2) String str3 = new String("abcd")的实现过程直接在堆中创建对象。如果后来又有String str4 = new String("abcd"),str4不会指向之前的对象,而是重新创建一个对象并指向它,所以如果此时进行str3==str4返回值是false,因为两个对象的地址不一样,如果是str3.equals(str4),返回true,因为内容相同。

最新文章

  1. jquery 图片轮播demo实现
  2. spring类型自动转换——@InitBinder和Converter
  3. Centos6.5 Zabbix3 server端安装(一)
  4. DP专题训练之HDU 2955 Robberies
  5. AutoMappeer自动映射
  6. SDUT 2877:angry_birds_again_and_again
  7. DataSet.Clear Method ()
  8. HDU 1574 RP问题
  9. MySQL不同库名相同表结构实现主从配置
  10. Thoughtworks的技术雷达
  11. php in_array比较原理和类型比较问题
  12. Ubuntu与Ubuntu系统之间的mount挂载
  13. Css Rest 方法
  14. JS关闭当前页面的方法
  15. Springmvc+Spring+Mybatis实现员工登录注册功能
  16. Spark源码剖析(七):Job触发流程原理与源码剖析
  17. Djnago框架组成
  18. JS 全选、全不选、反选
  19. Threed.sleep是不会释放锁,而wait是释放锁的(对象锁)
  20. Xilinx 常用模块汇总(verilog)【03】

热门文章

  1. redis集群(Sentinel)
  2. 如何将博客内容输出到pdf
  3. cordova的安装与配置
  4. 【读书笔记】--《编写高质量iOS与OS X代码的52个有效方法》
  5. 蓝桥杯2016年省赛C/C++大学A组
  6. Github Pull Request的提出与采纳
  7. npm报错This is probably not a problem with npm. There is likely additional logging
  8. [代码记录] C语言链表
  9. 吴裕雄 python 人工智能——基于神经网络算法在智能医疗诊断中的应用探索代码简要展示
  10. WLC license管理