在Java中打印输出时到底发生了什么?

时间:2011-12-08 13:53:42

标签: java printing system.out

任何人都可以解释一下,以下一行究竟发生了什么?

java.lang.System.out.print("string" + i);

它会打印“string”,紧接着是整数i的值,但是这里发生了什么?

这一行的每个部分有什么意义?

5 个答案:

答案 0 :(得分:0)

"string" + i正在执行字符串连接,例如,创建一个内容为string123的新字符串。

java.lang.System.out.print(通常缩写为System.out.print)然后将该字符串写入“标准输出” - 通常是运行该程序的控制台。

答案 1 :(得分:0)

java.lang是包,正确的import语句不需要它。 Systemjava.lang包中的一个类。 outSystem类中的静态公共字段(不需要绑定实例,如全局变量),类型为PrintStream

  

PrintStream将功能添加到另一个输出流,即   能够方便地打印各种数据值的表示。   还提供了另外两个功能。与其他输出流不同,   PrintStream永远不会抛出IOException;相反,特殊   情况只是设置一个内部标志,可以通过   checkError方法。可选地,可以创建PrintStream   自动冲洗;这意味着flush方法是自动的   在写入字节数组后调用,其中一个println方法是   调用,或写入换行符或字节('\ n')。

PrintStream在后​​台连接到OutputStream,可以连接到IDE输出或控制台输出(通过Java Native Interface)。

print方法"string" + i的参数使用+运算符连接成一个大字符串,可以直接输入到print方法。 i是一种原始int类型,因此在连接期间会在内存中临时转换为String。至于幕后字符串连接优化:

  

实现可以选择一步执行转换和连接,以避免创建然后丢弃   中间String对象。要增加重复的表现   字符串连接,Java编译器可能使用StringBuffer类   (§20.13)或类似技术减少中间体的数量   通过计算表达式创建的字符串对象。

     

对于原始对象,实现还可以通过直接从a转换来优化包装对象的创建   原始类型为字符串。

答案 2 :(得分:0)

java.lang.System是驻留在System包中的java.lang类的限定名称。您正在请求其方法print,它假定将String值作为参数。被调用方法将括号中的结果对象(强制转换为String)发送到默认输出(通常是控制台)。

答案 3 :(得分:0)

来自String javadoc

  

Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现的。字符串转换是通过方法toString实现的,由Object定义并由Java中的所有类继承。有关字符串连接和转换的其他信息,请参阅Gosling,Joy和Steele,Java语言规范。

所以"string" + i变成了:

new StringBuilder("string").append(i).toString();

然后传递给System.out.print()

答案 4 :(得分:0)

这是一个方法,它会在命令行显示您的消息,还有另一种方法可以在窗口中显示您的消息,写:

JOptionPane.showMassageDialog(null,"your message");