A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.判断定义为String类型的s1和s2是否相等
       String s1 = "abc";
       String s2 = "abc";
       System.out.println(s1 == s2);      
       System.out.println(s1.equals(s2));  
注意:==比较的是地址;equals方法比较的是内容.
字符串常量在空间中是存放在方法区的常量池里面的
是为了方便字符串的重复使用.所以"abc"  的地址赋值给
s1和s2所以s1==s2,内容更是相等,所以都为true;
2.下面这句话在内存中创建了几个对象?
       String s1 = new String("abc");  
创建 两个,在堆内存创立String对象空间,在方法区开辟abc""空间  
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
s1存的是在堆内存开辟空间的地址值,该空间的内容指向方法区的"abc"的地址
"abc"是在方法区开辟的字符串对象,也有一个地址值
4.判断定义为String类型的s1和s2是否相等
      String s1 = "a" + "b" + "c";
      String s2 = "abc";
      System.out.println(s1 == s2); ?    true   
      System.out.println(s1.equals(s2)); ?  true
     java中有常量优化机制 ,和byte b = 3 + 4; 一样的效果
    "a","b","c"在方法区自动拼接成"abc"
5.判断定义为String类型的s1和s2是否相等
      String s1 = "ab";
      String s2 = "abc";
      String s3 = s1 + "c";
      System.out.println(s3 == s2); false
      System.out.println(s3.equals(s2)); ?  true
  s3这是在堆内存创建StringBuffer或StringBuilder对象,
  将字符串用append方法拼接起来,在通过toString方法转成字符串。

1 个回复

正序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马