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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wingtheu 中级黑马   /  2014-11-5 14:29  /  912 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String类面试题
  • 1.判断定义为String类型的s1和s2是否相等
    • String s1 = "abc";
    • String s2 = "abc";
    • System.out.println(s1 == s2);
    • System.out.println(s1.equals(s2));
  • 2.下面这句话在内存中创建了几个对象?
    • String s1 = new String("abc");
  • 3.判断定义为String类型的s1和s2是否相等
    • String s1 = new String("abc");
    • String s2 = "abc";
    • System.out.println(s1 == s2); ?
    • System.out.println(s1.equals(s2)); ?
  • 4.判断定义为String类型的s1和s2是否相等
    • String s1 = "a" + "b" + "c";
    • String s2 = "abc";
    • System.out.println(s1 == s2); ?
    • System.out.println(s1.equals(s2)); ?
  • 5.判断定义为String类型的s1和s2是否相等
    • String s1 = "ab";
    • String s2 = "abc";
    • String s3 = s1 + "c";
    • System.out.println(s3.equals(s2)); ?


2 个回复

倒序浏览
1、true true;因为没有新建String对象,s1=“abc”存储在常量池中,s2=“abc”;发现常量池中已有"abc"就不再新建对象,s1和s2指向的是同一个对象。
2、2个,new了个s1,以及“abc”;
3、s1在堆内存中new了个对象,而s2存储在常量池中,两者的地址值不一样而内容相同,所以s1==s2  false而s1.equals(s2); true
4、s1=“a"+"b"+"c"没有创建对象而是将运算结果”abc“存储在常量池中,所以s1和s2指向的是同一对象;s1==s2 结果为true;s1.equals(s2);结果为true;
5、true
回复 使用道具 举报
学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马