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

来源:百度知道 编辑:UC知道 时间:2024/06/02 16:57:53
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);
}
}

System.out.println();
括号内""之间的内容原样输出,如果要引用变量的话括号内直接放变量比如(i),也可以放多个变量直接运算如:(i+r).
如果同时需要原样输出一些东西加变量的话就是("原样输出"+i),即变量和""用+号连接起来!

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

Understand?

前面的是代表整数型的相加,所以结果是3,
后面的是代表字符串拼接,所以结果是13,空格“”+拼接的,编译的时候会变成String型的,

System.out.println();里的写法很多!你这样写没错!
运行结果应该是3和12吧!
是12的原因是:在输出结果的时候前面加了""他会自动的把后面的数字当String处理!

i+r 这是两个int型的相加 所以他会计算出结果
"" 表示字符串咯!! 所以他把后面的也转换成了字符串!!不会相加

System.out.print(""+(i+r));
这样就会计算出来了

原因很简单:
java有自动类型转换,并且print()、println()方法实际是会打印参数的字符串表示。

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

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

java虚拟机会自动尝试将所给参数转换为字符串,就是调用参数所属的类的toString()方法(如果它这个类自身没有toString()方法,就会自动调用它父类的。因为所有类都继承自Object类,所以可能会调用到j