Java 为什么要印刷&引用+;变量单独输出每个变量,没有间距?
我的一项作业包含以下代码:Java 为什么要印刷&引用+;变量单独输出每个变量,没有间距?,java,Java,我的一项作业包含以下代码: System.out.println("" + x + y + count); 它单独输出x、y和count的值,不带任何空格。我想在网上了解更多。然而,我似乎找不到合适的关键字在网上搜索。有人能给我解释一下这背后的逻辑吗?或者给我指出一个这样的情况的名称或关键字 我一直都知道“”是一个打印字符串的工具,所以我对此感到困惑 提前感谢。该“是一个空字符串。在Java中,当您将字符串与其他可以转换为字符串的原语连接在一起时,结果就是一个字符串
System.out.println("" + x + y + count);
它单独输出x、y和count的值,不带任何空格。我想在网上了解更多。然而,我似乎找不到合适的关键字在网上搜索。有人能给我解释一下这背后的逻辑吗?或者给我指出一个这样的情况的名称或关键字
我一直都知道“”是一个打印字符串的工具,所以我对此感到困惑
提前感谢。该“
是一个空字符串。在Java中,当您将字符串与其他可以转换为字符串的原语连接在一起时,结果就是一个字符串。这意味着代码
System.out.println("" + something);
是一种不同的写作方式
System.out.println(String.valueOf(something));
然而,在您的场景中,“+x+y+count
意味着元素被转换为字符串,然后被连接起来-这意味着如果x==1
,y==2
,count==3
,结果将是123
。如果只想将结果强制转换为字符串,则必须指示在强制转换为字符串之前应进行计算,例如使用括号
System.out.println("" + (x+y+count));
此操作的输出将是6
,“
是一个空字符串。在Java中,当您将字符串与其他可以转换为字符串的原语连接在一起时,结果就是一个字符串。这意味着代码
System.out.println("" + something);
是一种不同的写作方式
System.out.println(String.valueOf(something));
然而,在您的场景中,“+x+y+count
意味着元素被转换为字符串,然后被连接起来-这意味着如果x==1
,y==2
,count==3
,结果将是123
。如果只想将结果强制转换为字符串,则必须指示在强制转换为字符串之前应进行计算,例如使用括号
System.out.println("" + (x+y+count));
这将是
6
的输出,或者您可以使用如下字符串格式:
System.out.printf("%d%d%d", x, y, count);
也可以使用如下字符串格式:
System.out.printf("%d%d%d", x, y, count);
如果我们应用标准Java优先规则,则语句:
System.out.println("" + x + y + count);
相当于
System.out.println((("" + x) + y) + count);
然后我们看一下+
- 如果
和a
的静态类型都是数字类型(原语数字或其装箱类型),则b
是数字加法a+b
- 否则,
是字符串连接。这两个参数被转换为字符串,字符串被连接起来a+b
+
运算符都将被视为字符串连接
如果希望在
x
、y
和count
之间使用空格,则需要添加一些字符串文字;e、 g
System.out.println("" + x + " " + y + " " + count);
或者,更简单地说:
System.out.println(x + " " + y + " " + count);
System.out.println(x + y + count);
如果要添加
x
、y
和count
(假设它们是数字),则可以编写以下代码:
System.out.println("" + (x + y + count));
或者,更简单地说:
System.out.println(x + " " + y + " " + count);
System.out.println(x + y + count);
后者使用不同的重载println
我一直都知道
“
是一种打印字符串的工具,所以我对此感到困惑
嗯。。。它实际上是一个空字符串文本。用法
“”+x
只是一种将x
转换为字符串的习惯用法。空字符串文字还有其他用途。主要是用零字符表示字符串。如果我们应用标准Java优先规则,语句:
System.out.println("" + x + y + count);
相当于
System.out.println((("" + x) + y) + count);
然后我们看一下+
- 如果
a
和b
的静态类型都是数字类型(原语数字或其装箱类型),则a+b
是数字加法
- 否则,
a+b
是字符串连接。这两个参数被转换为字符串,字符串被连接起来
基于此,我们可以说示例中的所有+
运算符都将被视为字符串连接
如果希望在x
、y
和count
之间使用空格,则需要添加一些字符串文字;e、 g
System.out.println("" + x + " " + y + " " + count);
或者,更简单地说:
System.out.println(x + " " + y + " " + count);
System.out.println(x + y + count);
如果要添加x
、y
和count
(假设它们是数字),则可以编写以下代码:
System.out.println("" + (x + y + count));
或者,更简单地说:
System.out.println(x + " " + y + " " + count);
System.out.println(x + y + count);
后者使用不同的重载println
我一直都知道“
是一种打印字符串的工具,所以我对此感到困惑
嗯。。。它实际上是一个空字符串文本。用法“”+x
只是一种将x
转换为字符串的习惯用法。空字符串文字还有其他用途。主要的方法是用零字符表示字符串。“”+x+…
是将表达式转换为字符串的一种方法。您还可以执行Integer.toString(x)+…
或String.valueOf(x)+…
。如果您想要有空格,您必须添加空格:“”+x+“”+y+“”+count
。或者使用格式来提高可读性printf(“%d%d%d%n”,x,y,count)
。文档:字符串连接是正确的关键字。“+x+…
是将表达式转换为字符串的一种方法。您还可以执行Integer.toString(x)+…
或String.valueOf(x)+…
。如果您想要有空格,您必须添加空格:“”+x+“”+y+“”+count
。或者使用格式化以提高可读性printf(“%d%d%d%n”,x,y,count)
。文档:字符串串联是正确的关键字。我已将其更改为String::valueOf
,以避免数据类型冲突。应单独转换它们。。。比如:System.out.println(String.valueOf(x)+String.valueOf(y)+String.valueOf(count))哦,我现在明白你的意思了。我将删除答案并更正。@StephenC谢谢