1、 判断定义为String类型的s1和s2是否相等
String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2); // 引用数据类型,比较地址值 ,true
System.out.println(s1.equals(s2)); // true 比较equals:当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
2、 下面这句话在内存中创建了几个对象?
String s1 = new String("abc"); //这句话在内存中创建了两个对象,一个是常量池,一个是堆内存中(副本)
System.out.println(s1);
3、 判断定义为String类型的s1和s2是否相等
String s1 = new String("abc"); //在堆内存
String s2 = "abc"; //在常量池
System.out.println(s1==s2); //结果==false
System.out.println(s1.equals(s2)); //结果==true(两个属性相同)
4、 判断定义String类型的s1和s2是否相等
//byte b = 3 + 4; //有常量优化机制,在编译时,结果等于7在byte取值范围内,会自动帮我们转换
String s1 = "a"+"b"+"c";
String s2 = "abc";
System.out.println(s1==s2); //结果==true,Java中有常量优化机制
System.out.println(s1.equals(s2)); //结果=true
5、判断定义String类型的s2和s3是否相等
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s2==s3); //结果==false
System.out.println(s2.equals(s3)); //结果==true