关于不理解java String 而闹出的笑话

首先进行一个小小的测试:

String salt = "1a2b3c4d5e";

String inputPass = "123456";

String str = "" + salt.charAt(0) + salt.charAt(2) + salt.charAt(4) + inputPass + salt.chatAt(3);

String str1 = salt.charAt(0) + salt.charAt(2) + salt.charAt(4) + inputPass + salt.chatAt(3);

String str2 = salt.charAt(0) + salt.charAt(2) + salt.charAt(4);

在上面代码中,请问 str与str1值相等吗?如果它们不相等,那它们的值各自是多少?str2的值又是多少?

大家思考一下,10,9,8,7,6,5,4,3,2,1,0 时间到,下面来看答案。

和你想的是一样的吗?

如果不一样,那请继续往下看。

为什么str和str1的值不同呢?

对于str来说,由于刚开始的时候加入空字符串,导致此时加号的作用变为“字符串拼接”,因此得到的值是“123123456b”;

而对于str1,我们先看一下charAt()的实现方式(见下图),它返回值的类型是字符。

在遇到 inputPass 之前,加号(+)加的是其前后两个字符对应的十进制值。结合下面的Ascii表,我们知道str2的值为什么等于150?

在遇到 inputPass 之后,加号的作用变为“字符串拼接”,所以str1的值是"150123456b"

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值