Java-String类常见面试题

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 中的所有类继承。

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值