您的位置:首页 > 职场人生

Java-String类常见面试题

2016-12-30 15:39 531 查看
1.判断定义为String类型的s1和s2是否相等

String s1="abc";
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));


运行结果为

true
true




==比较基本数据类型的时候比较的是值,比较引用类型的时候比较的是地址值。这里是比较的引用类型。

创建“abc”的时候先到常量池看看有没有,没有的话就创建一个,有的话就直接用。所以s1和s2的存的地址值相同,指向的是同一个。

equals是Object中的方法,只能用于引用类型,也是比较的地址值。但String类重写了equals方法,来比较字符串是否相等。

2.这句话在内存创建了几个对象

String s1=new String("abc");


答案是两个



执行“abc”的之后在常量池创建一个,new的时候在堆里创建一个,并把常量池中的“abc”复制了一份过去。然后将其引用赋给了s1。

3.判断定义为String类型的s1和s2是否相等

  String s1=new String("abc");//堆内存的地址
String s2="abc";//常量池的地址
System.out.println(s1==s2);
System.out.println(s1.equals(s2));


运行结果为

false
true




4.判断定义为String类型的s1和s2是否相等

String s1="ab";
String s2="abc";
String s3=s1+"c";
System.out.println(s3==s2);
System.out.println(s3.equals(s2));


运行结果为

false
true




先通过StingBuffer将“ab”和“c”合并成“abc”,然后通过toString将其转换成字符串。

Java 语言提供对字符串串联符号(”+”)以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string 面试题 java