关于Java中String的几个小问题

字符串String在Java中会经常用到,在这里介绍几个与String有关的面试题。

第一个:

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

在这里,第一个输出结果为true,第二个也为true。这里,当执行s1这句时,先会去字符串缓冲池中去找是否包含这个字符串,如果没有,就会创建一个;当执行s2这句时也会去池中去找是否包含这个字符串,如果有,就直接引用。由于equals()比较的是内容是否相同,所以第一个为true;"=="比较的是地址是否相同,因为指向同一个池,所以也为true。


第二个:

String s3=new String("CSDN");
String s4=new String("CSDN");
System.out.println(s3.equals(s4));
System.out.println(s3==s4);

在这里,第一个输出为true,第二个输出为false。由于是new出来的String,所以是在缓冲池的外面创建的内容,所以s3是在池外面的,同s4也是在吃外面的。所以s3和s4的地址不同,但是因为内容相同,所以,第一个为true,第二个为false。

第三个:

String s1="CSDN";
s1.substring(2);
s1.concat("123");
System.out.println(s1);

String str=new String("CSDN");
System.out.println(s1==str);

这里第一个输出为CSDN,第二个为false。因为String类的对象是常量,不会改变,该类任何方法都不会改变自己的值。这就是为什么截取字符串再合并后还是原来的字符串的原因。


总共就这三个小题目,算是个人的笔记,望指正批评。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值