新手求教 字符串和数字相加问题 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 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的代码相当于以下的: 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() );懂了么? 这是一个字符转化的问题,"+"既是操作符"+",又是连接字符。字符串相当于字符数组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])+" ");就可以得到字符串了,你手动装箱吧 转换成字符串的一种方式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()); 这个挺简单的,朋友,看看 (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)中的是先强制转换为字符串,这样连后面的整形也被强制装换为字符串类型了,+在字符串中只能做连接字符!如果还有什么不懂的,可以再跟你说说~~ 谢谢各位,已经看明白,也试验过了,是转换成字符串时机的问题。比如下面这句System.out.println(a1[0]+a1[1]+a1[2]+" "+5+6);输出结果就是7 56 这是一个字符转化的问题,"+"既是操作符"+",又是连接字符。字符串相当于字符数组a1[0] + a1[1] +a1[2] +" " 把数组相应下表的值加起来,然后在和" "连接;" " + a1[0] +a1[1] +a1[2] 把" "转化为Asscii值,然后和a1[0]相加.如果有需要其他java方面的帮助可以加入我们的java开发联盟。 群号: 247286682 欢迎来自全国各地的java爱好者加入。群里有来自全国各地的java开发高手与你一起探讨java技术。 来者请注明csdn。 整型常量与字符串常量相加问题 本人是菜鸟.求高手!怎么做个公司的雇员工资支付程序~~~ 串口发送短信的例子有源码 安装完JB9后遇到的一个奇怪问题 有一个简单而难明的问题 Java StringBuilder和String的内存分析的问题 java抛出错误后,是应用当前线程停止了,还是整个虚拟机停止了? 哪位高手知道怎么配置ldap? 哪有免费visualage下载 why it is overload? J2EE和android怎么选择? 编写一个小算法
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() );
懂了么?
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])+" ");
就可以得到字符串了,你手动装箱吧
System.out.println((new StringBuilder(" ")).append(a1[0]).append(a1[1]).append(a1[2]).toString());
(2) System.out.println(" " + a1[0] +a1[1] +a1[2]);的结果是124 原因是如果你的数组是整形数据,也就是可以使用+做加法,而对于“”的转换,就是转换成一种字符串,字符串中的+是连接字符串的作用,明白了这个后,你就要看看你的运算是先做加法还是先转换为字符串,像(1)中的,你看看它是先做整形数字的加法,最后在强制转换为字符串,“”的作用其实跟toString()作用一样,(2)中的是先强制转换为字符串,这样连后面的整形也被强制装换为字符串类型了,+在字符串中只能做连接字符!如果还有什么不懂的,可以再跟你说说~~
比如下面这句System.out.println(a1[0]+a1[1]+a1[2]+" "+5+6);输出结果就是7 56
a1[0] + a1[1] +a1[2] +" " 把数组相应下表的值加起来,然后在和" "连接;
" " + a1[0] +a1[1] +a1[2] 把" "转化为Asscii值,然后和a1[0]相加.如果有需要其他java方面的帮助可以加入我们的java开发联盟。
群号:
247286682 欢迎来自全国各地的java爱好者加入。群里有来自全国各地的java开发高手与你一起探讨java技术。
来者请注明csdn。