任何人都可以解释一下,以下一行究竟发生了什么?
java.lang.System.out.print("string" + i);
它会打印“string”,紧接着是整数i
的值,但是这里发生了什么?
这一行的每个部分有什么意义?
答案 0 :(得分:0)
"string" + i
正在执行字符串连接,例如,创建一个内容为string123
的新字符串。
java.lang.System.out.print
(通常缩写为System.out.print
)然后将该字符串写入“标准输出” - 通常是运行该程序的控制台。
答案 1 :(得分:0)
java.lang
是包,正确的import
语句不需要它。 System
是java.lang
包中的一个类。 out
是System
类中的静态公共字段(不需要绑定实例,如全局变量),类型为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)
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");