1 package test;
2
3 public class StringTest {
4
5 public static void main(String[] args) {
6
7 /**
8 * 创建过程:
9 * 1.检查StringPool(字符串池)里是否有"aaa"对象,这里没有,创建StringPool的字符串对象"aaa"
10 * 2.在jvm堆里创建字符串对象"aaa"
11 * 所以,这里创建了2个对象
12 */
13 String s = new String("aaa");
14
15 /**
16 * 创建过程:
17 * 1.检查StringPool(字符串池)里是否有"aaa"对象,因为上面已经创建过,所以这里不再创建
18 * 所以,这里并没有创建对象
19 */
20 String s2 = "aaa";
21
22 /**
23 * 创建过程:
24 * 1.检查StringPool(字符串池)里是否有"aaa"对象,因为上面已经创建过,所以这里不再创建
25 * 2.在jvm堆里创建字符串对象"aaa"
26 * 所以,这里创建了1个对象
27 */
28 String s3 = new String("aaa");
29
30 /**
31 * intern方法的作用:返回调用对象的字符串池里的字符串对象的引用
32 */
33 String s4 = s.intern();
34
35 String hello = "hello";
36 String hel = "hel";
37 String lo = "lo";
38
39 /**
40 * 打印true
41 * 如果右边计算不涉及变量计算,全部都是常量,不会产生新的对象
42 * 所以返回的是字符串池里的对象引用
43 */
44 System.out.println(hello == "hel" + "lo");
45 /**
46 * 打印false
47 * 右边计算涉及变量计算,有对象操作,会产生一个新的对象
48 * 所以返回的是堆的对象引用
49 */
50 System.out.println(hello == "hel" + lo);
51 }
52
53 }

最新文章

  1. Ubuntu学习总结-12 linux 平台及 windows 平台 mysql 重启方法
  2. iOS之加密的三种方法
  3. SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
  4. Lnux 16.04 VM下安装与汉化
  5. jquery 平滑锚
  6. Flask生成SECRET_KEY(密钥)的一种简单方法
  7. DG - physical standby switchover切换过程
  8. 创建缓存文件(。php)
  9. [ActionScript 3.0] AS3 用于拖动对象时跟随鼠标的缓动效果
  10. Android应用更新升级实现
  11. [改善Java代码]使用静态内部类提高封装性
  12. [每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8
  13. Gruntjs构工具学习视频
  14. 如何使用不同dll的相同namespace下的相同接口
  15. spring2.0 Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definiti
  16. CentOS7虚拟机安装VMware Tools
  17. Xaml Controls Gallery 的五个没有用的控件
  18. Windows下自带压缩文件工具之-makecab
  19. 给datagridview的下拉框添加valueChange事件
  20. vue 二三倍图适配,1像素边框

热门文章

  1. python数据更新
  2. python MD5加密和flask-generate_password_hash
  3. 使用Flutter重构斗鱼APP
  4. Scrum 冲刺 第五篇
  5. justify-content属性详解
  6. CF1400F - x-prime Substrings
  7. kylin的实现原理
  8. 把java编译成exe和安装包
  9. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)
  10. 一次数独生成及解题算法的剖析(Java实现)