新手求教 字符串和数字相加问题

ramstam1 2012-09-26 09:40:42

public class Test{
public static void main(String[] args){
long[] a1={1,2,4};
System.out.print(a1[0] + a1[1] +a1[2] +" ");
System.out.println(" " + a1[0] +a1[1] +a1[2]);
}
}


为什么编译后的结果是:7 124
...全文
705 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这是一个字符转化的问题,"+"既是操作符"+",又是连接字符。字符串相当于字符数组
a1[0] + a1[1] +a1[2] +" " 把数组相应下表的值加起来,然后在和" "连接;
" " + a1[0] +a1[1] +a1[2] 把" "转化为Asscii值,然后和a1[0]相加.

如果有需要其他java方面的帮助可以加入我们的java开发联盟。
群号:
247286682

欢迎来自全国各地的java爱好者加入。群里有来自全国各地的java开发高手与你一起探讨java技术。
来者请注明csdn。
ramstam1 2012-09-26
  • 打赏
  • 举报
回复
谢谢各位,已经看明白,也试验过了,是转换成字符串时机的问题。
比如下面这句

System.out.println(a1[0]+a1[1]+a1[2]+" "+5+6);

输出结果就是7 56
Elaine00 2012-09-26
  • 打赏
  • 举报
回复
这个挺简单的,朋友,看看 (1) System.out.print(a1[0] + a1[1] +a1[2] +" ");的结果是:7
(2) System.out.println(" " + a1[0] +a1[1] +a1[2]);的结果是124

原因是如果你的数组是整形数据,也就是可以使用+做加法,而对于“”的转换,就是转换成一种字符串,字符串中的+是连接字符串的作用,明白了这个后,你就要看看你的运算是先做加法还是先转换为字符串,像(1)中的,你看看它是先做整形数字的加法,最后在强制转换为字符串,“”的作用其实跟toString()作用一样,(2)中的是先强制转换为字符串,这样连后面的整形也被强制装换为字符串类型了,+在字符串中只能做连接字符!如果还有什么不懂的,可以再跟你说说~~
wwwcomcn123 2012-09-26
  • 打赏
  • 举报
回复
转换成字符串的一种方式

System.out.print((new StringBuilder(String.valueOf(a1[0] + a1[1] + a1[2]))).append(" ").toString());
System.out.println((new StringBuilder(" ")).append(a1[0]).append(a1[1]).append(a1[2]).toString());
xunmengdehao 2012-09-26
  • 打赏
  • 举报
回复
这是一个字符转化的问题,"+"既是操作符"+",又是连接字符。字符串相当于字符数组
a1[0] + a1[1] +a1[2] +" " 把数组相应下表的值加起来,然后在和" "连接;
" " + a1[0] +a1[1] +a1[2] 把" "转化为Asscii值,然后和a1[0]相加;
你可以这样:
System.out.println(String.valueOf(a1[0])+String.valueOf(a1[1])+String.valueOf(a1[2])+" ");
就可以得到字符串了,你手动装箱吧
LogicTeamLeader 2012-09-26
  • 打赏
  • 举报
回复
你的代码相当于以下的:
        System.out.print(new Long(a1[0] + a1[1] + a1[2]).toString() +" ");
System.out.println(" "+new Long(a1[0]).toString() +new Long(a1[1]).toString()+new Long(a1[2]).toString() );

懂了么?

62,634

社区成员

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

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