【问题标题】:What exactly happens when you print output in Java?在 Java 中打印输出时究竟会发生什么?
【发布时间】:2012-01-15 22:48:30
【问题描述】:

谁能解释一下,下面这行到底发生了什么?

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

它将打印“字符串”,紧接着是整数值i,但这里发生了什么?

这条线的每一部分有什么意义?

【问题讨论】:

  • 你读了一些Java教程怎么样?这不是编程问题
  • @Guillaume - 公平地说,它一个编程问题,它只是 OP 在提问之前应该做一些研究的问题。
  • 使用标准约定 i 是一个整数,但规则实际上并不要求它。也许Object i = new Object ( ) { public String toString ( ) { throw new RuntimeException ( ) ; } } ;

标签: java printing system.out


【解决方案1】:

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

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

这个PrintStream 在后台连接到OutputStream,它可以连接到IDE 输出或控制台输出(通过Java 本地接口)。

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

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

对于原始对象,实现还可以通过直接从 原始类型转换为字符串。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      来自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】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2015-12-25
            • 2019-10-12
            • 2015-10-23
            • 2011-01-18
            • 1970-01-01
            • 2014-08-20
            • 1970-01-01
            • 2019-10-19
            • 1970-01-01
            相关资源
            最近更新 更多