java中的System.out.println();括号里的东西怎么写 看下面的两个程序,运行结果为什么不一样啊 区别在哪里

classTest2{publicstaticvoidmain(String[]args){inti=1,r=2;System.out.println(i+r);}}cl... class Test2
{

public static void main (String []args)
{
int i=1,r=2;
System.out.println(i+r);
}
}

class Test2
{

public static void main (String []args)
{
int i=1,r=2;
System.out.println(""+i+r);
}
}
展开
 我来答
0o萧雨o0
2009-01-17 · TA获得超过1221个赞
知道小有建树答主
回答量:642
采纳率:0%
帮助的人:467万
展开全部
System.out.println();
括号内""之间的内容原样输出,如果要引用变量的话括号内直接放变量比如(i),也可以放多个变量直接运算如:(i+r).
如果同时需要原样输出一些东西加变量的话就是("原样输出"+i),即变量和""用+号连接起来!

如果要用多个变量运算,并且需要原样输出一些东西的话,就加括号以区别开,如:("原样输出"+(i+r));

Understand?
leibin198191
2009-01-17 · 超过13用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:0
展开全部
前面的是代表整数型的相加,所以结果是3,
后面的是代表字符串拼接,所以结果是13,空格“”+拼接的,编译的时候会变成String型的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sokon
2009-01-17 · TA获得超过103个赞
知道答主
回答量:161
采纳率:0%
帮助的人:62.4万
展开全部
System.out.println();里的写法很多!你这样写没错!
运行结果应该是3和12吧!
是12的原因是:在输出结果的时候前面加了""他会自动的把后面的数字当String处理!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gz...8@163.com
2009-01-18 · 超过20用户采纳过TA的回答
知道答主
回答量:161
采纳率:0%
帮助的人:83.6万
展开全部
i+r 这是两个int型的相加 所以他会计算出结果
"" 表示字符串咯!! 所以他把后面的也转换成了字符串!!不会相加

System.out.print(""+(i+r));
这样就会计算出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友211658b42
2009-01-18 · TA获得超过3383个赞
知道小有建树答主
回答量:606
采纳率:100%
帮助的人:603万
展开全部
原因很简单:
java有自动类型转换,并且print()、println()方法实际是会打印参数的字符串表示。

对于Test1,java虚拟机发现i和r都是数值,所以就把i和r相加,得到数值3,然后将int型的数值3表示为字符串"3"打印出来。

而对于Test2,java虚拟机发现所给的参数并不都是数值,不能做数学运算,那么就将所有参数全部先转换为字符串表示,于是+号就不是数学运算,而是字符串连接,于是得到输出结果"12"。

java虚拟机会自动尝试将所给参数转换为字符串,就是调用参数所属的类的toString()方法(如果它这个类自身没有toString()方法,就会自动调用它父类的。因为所有类都继承自Object类,所以可能会调用到java.lang.Object的toString()方法)。所以如果你自定义了一个类,想让它用print()打印类的相关信息,只需要重写toString()方法就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式