str.charAt在print方法里连接的问题。

SilentHunter460 2019-11-02 11:16:33
请教,我希望打印17,但第一次打印104,肯定是拿int值相加了。但是第二三四次为什么还打印104?


package test;

public class main1 {
public static void main(String[] args) {
String str = "12345";
String str2 = "7890";
System.out.println(str.charAt(0) + str2.charAt(0));
System.out.println(str.charAt(0) + str2.charAt(0) + "");
System.out.println((char) str.charAt(0) + (char) str2.charAt(0));
System.out.println((char) str.charAt(0) + (char) str2.charAt(0) + "");
}
}

...全文
210 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟①个 2019-11-02
  • 打赏
  • 举报
回复
引用 3 楼 qq_16774199的回复:
[quote=引用 1 楼 lkwahl 的回复:] 想打印17应该sout(str.charAt(0)+""+str2.charAt(0))
请问具体怎么写?[/quote] sout是System.out.println的表示,我懒得打字啊。。。在idea里面打个sout就是这个,。。
  • 打赏
  • 举报
回复
char类型相加是拿ASCII码相加的,你要实现字符串连接,就得在相加之前转化,就用二楼的方式就可以
SilentHunter460 2019-11-02
  • 打赏
  • 举报
回复
引用 2 楼 人生呐 的回复:
你第二三四次,和第一次的写法没区别,第二个加法是按顺序的,所以相当于第一次的结果+"",第三次和第四次的强转没有意义,charAt本身就是返回char型的,所以没区别
是否说明print方法用char类型相加不能产生连接的效果,只能得到int值的结果?
SilentHunter460 2019-11-02
  • 打赏
  • 举报
回复
引用 1 楼 lkwahl 的回复:
想打印17应该sout(str.charAt(0)+""+str2.charAt(0))
请问具体怎么写?
  • 打赏
  • 举报
回复
你第二三四次,和第一次的写法没区别,第二个加法是按顺序的,所以相当于第一次的结果+"",第三次和第四次的强转没有意义,charAt本身就是返回char型的,所以没区别
菜鸟①个 2019-11-02
  • 打赏
  • 举报
回复
想打印17应该sout(str.charAt(0)+""+str2.charAt(0))
夜之眷属 2019-11-02
  • 打赏
  • 举报
回复
+有两种含义,一种是计算相加,一种是拼接,只有在+两边会有字符串的时候就会做字符串的拼接,其他的都是直接相加,字符类型的数据也会做类型转换到对应的uncode码 直接做整形相加,所以要想做字符串拼接就必须保证+两边至少有一个字符串,所以可以在中间或者最前面加个空字符串或者通过String.valueOf()将其中一个转化为字符串。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧