-6

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

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

它将立即打印“字符串”,然后是 integer 的值i,但是这里发生了什么?

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

4

5 回答 5

0

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

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

于 2011-12-08T13:58:10.253 回答
0

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

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

PrintStream是在幕后连接到一个OutputStream可以连接到 IDE 输出或控制台输出(通过 Java 本地接口)的。

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

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

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

于 2011-12-08T14:00:54.773 回答
0

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

于 2011-12-08T14:01:10.250 回答
0

字符串 javadoc

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

所以"string" + i变成:

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

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

于 2011-12-08T14:07:21.210 回答
0

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

JOptionPane.showMassageDialog(null,"your message");
于 2011-12-08T23:07:55.367 回答