string类的学习01
1.String赋值方式
1.1 直接赋值和使用new关键字赋值
package student;
public class StringDemo1 {
public static void main(String[] args) {
String str1="zhuyun";//使用直接赋值的方式
String str=new String("zhuyunyun");//使用new方式赋值
System.out.println(str1);
System.out.println(str);
}
}
2.==和equals区别
2.1使用==开辟一块内储存空间,比较的时内存地址,必须进行内存的分析
str | zhuyn | 输出的值全部相同共同指向一个字符串“zhuyun” |
---|---|---|
str1 | ||
str2 |
package student;
public class StringDemo2 {
public static void main(String[] args) {
//直接赋值方式比较的是什么?
String str="zhuyun";
String str1=new String("zhuyun");
String str2=str1;
System.out.println("str==str1么:"+(str==str1));
System.out.println("str==str2么:"+(str==str2));
System.out.println("str1==str2么:"+(str1==str2));
}
}
输出的值为:
str==str1么:false
str==str2么:false
str1==str2么:true
Process finished with exit code 0
2.2string的“equals”,在堆内开辟两块存储,比较的是内容的值是否相同
package student;
public class StringDemo3{
public static void main(String[] args) {
//直接赋值方式比较的是什么?
String str="zhuyun";
String str1=new String("zhuyun");
String str2=str1;
System.out.println("str==str1么:"+(str.equals(str1)));
System.out.println("str==str2么:"+(str.equals(str2)));
System.out.println("str1==str2么:"+(str1.equals(str2)));
}
}
str==str1么:true
str==str2么:true
str1==str2么:true
Disconnected from the target VM, address: '127.0.0.1:55559', transport: 'socket'
Process finished with exit code 0
结论:“==”是比较堆内存地址,需要进行内存分析,equals是比较值是否相同。
2.3 一个字符串就是String的匿名对象
package student;
public class StringDemo4 {
public static void main(String[] args) {
System.out.println("zhuyun".equals("zhuyun"));
}
}
true
Disconnected from the target VM, address: '127.0.0.1:55701', transport: 'socket'
Process finished with exit code 0
结论:字符串能够调用equal方法,说明字符串本身就是对象,而且是匿名的,所以叫做匿名对象