Java-Scanner的使用
目录
1 String字面值对象和构造方法创建对象的区别
public class StringDemo2 {
public static void main (String[] args) {
String s1 = new String("hello" );
String s2 = "hello" ;
System.out .println(s1 == s2);
System.out .println(s1.equals(s2));
}
}
String s = new String (“hello”)和String s = “hello”的区别?
有。前者会创建2 个对象,后者创建1 个对象。
==:比较引用类型比较的<地址值>是否相同
equals :比较引用类型默认也是比较地址值是否相同,而String 类重写了equals ()方法,比较的是内容是否相同。
public class StringDemo3 {
public static void main (String[] args) {
String s1 = new String("hello" );
String s2 = new String("hello" );
System.out .println(s1 == s2);
System.out .println(s1.equals(s2));
String s3 = new String("hello" );
String s4 = "hello" ;
System.out .println(s3 == s4);
System.out .println(s3.equals(s4));
String s5 = "hello" ;
String s6 = "hello" ;
System.out .println(s5 == s6);
System.out .println(s5.equals(s6));
}
}
* 看程序写结果
* 字符串如果是变量相加,先开空间,再拼接。
* 字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
public class StringDemo4 {
public static void main (String[] args) {
String s1 = "hello" ;
String s2 = "world" ;
String s3 = "helloworld" ;
System.out .println(s3 == s1 + s2);
System.out .println(s3.equals((s1 + s2)));
System.out .println(s3 == "hello" + "world" );
System.out .println(s3.equals("hello" + "world" ));
}
}