JAVA面试题

关于字符串以及字符串拼接问题

#判断两个字符串值是否是相同

代码如下(示例):

String s1="abc";
String s2="abc";
System.out.println(s1.equals(s2));   //1
System.out.println(s1==s2);//2
//输出结果如何?
/*1:是true String实质是Jdk默认的类,用equals进行判断时s1=s2的,会出现true,当你重新定义类时,定义带参的构造方法时,创建两个参数相同方法时,用equals进行判断时会出现false,这是你需要重写equals中的方法(具体参考API开发手册)。
//2:是true,s1,s2属于常量,当你定义常量s1时,会在常量池中出现定义的s1的值,而s2直接复用s1不会在创建常量值。

示例图如下:
在这里插入图片描述

2.用String 创建新的对象

代码如下(示例):

 String s3=new String("abc");
 String s4=new String("abc");
 System.out.println(s3.equals(s4));//3
System.out.println(s3==s4);//4
//3的原理同上1,
//4.为false,因为new 是创建了新的对象。然而这两个新的对象在堆中分别占用不了不同的地址,地址不同,所以为false
图如下

在这里插入图片描述

三.拼接问题

String s5="ab"+"c";
String s6="ab";
String s7=s6+"c";
System.out.println(s5==s7);//5.false
System.out.println(s6==s5);//6.false
5.s5是直接创建“abc”,s7为先在常量池中创建“ab”,然后再创建"c",两者进行拼接组成s7,拼接期间在编译期间就完成了,拼接完成后的结果还是一个字符串对象。所以两个不相等
6.s6与s5的值不一样,所以为false
图如下

在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子言君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值