java的String
String类型可以有两种方式创建;
1.构造方法:
char[] chs = {'a','b','c'}; String s1 = new String(chs);
2.直接赋值:
String s3 = "abc";
两者的区别就是,使用构造方法创建的对象,值相同的话内存地址不同,而使用直接赋值创建的对象,值相同的话内存地址相同(== 引用比较的是内存地址)。
代码:
public class StringDemo { public static void main(String[] args) { //构造方法创建String类型对象 char[] chs = {'a','b','c'}; String s1 = new String(chs); String s2 = new String(chs); //直接赋值的方式创建String类型对象 String s3 = "abc"; String s4 = "abc"; System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s3 == s4); } }
结果:
那么怎么比较内容呢?引入一个新的方法,equals;
代码:
public class StringDemo { public static void main(String[] args) { //构造方法创建String类型对象 char[] chs = {'a','b','c'}; String s1 = new String(chs); String s2 = new String(chs); //直接赋值的方式创建String类型对象 String s3 = "abc"; String s4 = "abc"; System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s3 == s4); System.out.println("--------------------------"); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); System.out.println(s3.equals(s4)); } }
结果: