1、三大核心机制:
不变性、常量池优化、final
1.1只要对String进行修改,那就是创建了一个新的对象
1.2 不变性:
是一个immutable模式的对象,不变模式的主要作用是当一个对象需要被多线程共享并频繁访问时,可以保证数据的一致性
1.3 常量池优化:
String对象创建之后,会在字符串常量池中进行缓存,下次创建同样的对象时,会直接返回缓存对象的引用
1.4 final:
String类不可被继承,提高了系统的安全性
2、String
2.1 创建方式
System.out.println(num);
String str1 = "str1"; // 存放于字符串常量池中
String str2 = new String("str1"); // 存放于堆内存中
char[] chars = {'x','s'};
String str3 = new String(chars);
直接复制存储于字符串常量池中,new的时候存储于堆内存中
2.2 大小比较
String com1 = "com";
String com2 = "com";
String com3 = new String("com");
String com4 = new String("com");
System.out.println(com1 == com2); // T
System.out.println(com1 == com3); // F
System.out.println(com4 == com3); // F System.out.println(com3.equals(com4)); // T
2.3 重写了equals方法
用于判断String的值是否相等
2.4 intern()
System.out.println(com1 == com3.intern()); // T
当调用某个字符串对象的intern()方法,会去字符串常量池中找这个字符串,找到之后直接返回当前对象的引用,如果不存在,则在字符串常量池中创建该对象并返回