1.常见的四种方法
注意:String这个类比较特殊,打印其对象名的时候,不会出现内存地址,而是该对象所记录的真实内容
2.构造方法和双引号创建对象的区别
注意:== 号做比较
基本类型数据:比较的是具体的值
引用数据类型:比较地址值
1.以" "方式给出的字符串,只要字符串序列相同(顺序和大小写),无论在程序 中出现几次,JVM都只会建立一个String对象,并在字符串常量池中维护
- 字符串常量池:当使用双引号创建字符串对象的时候,系统会检查字符串是否在字符串常量池存在,不存在就创建,存在就直接复用。
所以s1==s2是成立的,地址值相同
2.通过构造方法创建的字符串对象,在堆内存中存储,每一次都会申请一个内存空间,虽然内容相同,但是地址值不同
- 在堆内存中开辟一块空间,存储'a','b','c',地址是001
- s1,s2会在在堆内存中开辟两块空间,地址值分别是002,003
- 002,003内部存储着001的地址
所以S1==S2 ,相当于判断002==003,所以这是不成立的