Java运行环境有一个类似字符串池的东东。
1.
执行语句String
str="str"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"的引用给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其引用给给str。
2.
执行语句String
str
=
new
String(
"str");
首先在String池内找,找到?不创建String对象,否则创建,
这样就一个String对象;然后遇到new运算符号,又在内存上创建String对象,并将其返回给str,又一个对象
所以总共是2个
例:
String
s1="str";
String
s2="str";
String
s3=new
String("str");
String
s4=new
String("str");
system.out.println(s1==s2);
//
true
system.out.println(s1==s3);
//
false
system.out.println(s3==s4);
//
false
string不是八种基本数据类型的一种,如"abc"的字面值都是string类的实例。是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为“+”连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用“+”连接其他对象;String类也是被final修饰的,因此也不能被继承;
左上角有我头像,欢迎来学习交流