在 Java 中的 int 数组中使用单引号打印 space 时出现问题
Issue with printing space with single quotes in a int array in Java
我想以特定格式打印我的 int[]
(在每个数字之间的 space
内,等等)
但是我发现 Java 没有打印单引号中的空格,它甚至改变了我在 int[]
中的数字。 bracket
字符也发生了同样的事情。
例如:
int[] test = {1,2,3,4,5};
System.out.println('(' + test[0]+ ' ' +test[1] + ' ' + test[2] + ' '
+test[3] + ' ' + test[4] + ')');
//224
System.out.println("(" + test[0]+ " " +test[1] + " " + test[2] + " "
+test[3] + " " + test[4] + ")");
//(1 2 3 4 5)
我认为 space
和 bracket
是字符,我想知道为什么我需要使用 double quotes
来正确打印它们以及为什么 single quotes
和 space
字符会改变输出?
谢谢!
原因是,字符基本上存储为数字。当您将字符与其他数字相加时,您将收到一个数字作为结果。
// Prints 97
System.out.println('a' + 0);
字符不会作为数字添加的唯一情况是将它们添加到字符串中。
System.out.println("Letter" + 'a');
在上面的代码中,您只将数字和字符相加,因此您得到一个数字作为输出。 Java 从左到右添加内容,因此通过将 first-appearing 字符更改为字符串,您应该得到所需的输出。
// Fixed version
System.out.println("(" + test[0]+ ' ' +test[1] + ' ' + test[2] + ' '
+test[3] + ' ' + test[4] + ')');
Java单引号表示char类型,double-quote表示String类型。所以你的第一行是试图打印这些字符的值。有关重载方法,请参阅此处 https://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()。
带撇号的引号是 char
文字。 char
是一个数字基元,可以添加到其他数字基元,如 int
.
+
运算符也被重载以实现字符串连接。如果运算符的任一侧是 String
,则 +
运算符是字符串连接运算符,否则它是数字加运算符。
因此,'A' + 5
表示将字符A
的数值加5,而"A" + 5
表示将字符串A
与数字[的字符串表示形式连接起来=21=].
在您的情况下,将第一个字符更改为 String
文字就足够了。所有剩余的 +
运算符将成为字符串连接运算符:
System.out.println("(" + test[0] + ' ' + test[1] + ' ' + test[2] + ' '
+ test[3] + ' ' + test[4] + ')');
//(1 2 3 4 5)
我想以特定格式打印我的 int[]
(在每个数字之间的 space
内,等等)
但是我发现 Java 没有打印单引号中的空格,它甚至改变了我在 int[]
中的数字。 bracket
字符也发生了同样的事情。
例如:
int[] test = {1,2,3,4,5};
System.out.println('(' + test[0]+ ' ' +test[1] + ' ' + test[2] + ' '
+test[3] + ' ' + test[4] + ')');
//224
System.out.println("(" + test[0]+ " " +test[1] + " " + test[2] + " "
+test[3] + " " + test[4] + ")");
//(1 2 3 4 5)
我认为 space
和 bracket
是字符,我想知道为什么我需要使用 double quotes
来正确打印它们以及为什么 single quotes
和 space
字符会改变输出?
谢谢!
原因是,字符基本上存储为数字。当您将字符与其他数字相加时,您将收到一个数字作为结果。
// Prints 97
System.out.println('a' + 0);
字符不会作为数字添加的唯一情况是将它们添加到字符串中。
System.out.println("Letter" + 'a');
在上面的代码中,您只将数字和字符相加,因此您得到一个数字作为输出。 Java 从左到右添加内容,因此通过将 first-appearing 字符更改为字符串,您应该得到所需的输出。
// Fixed version
System.out.println("(" + test[0]+ ' ' +test[1] + ' ' + test[2] + ' '
+test[3] + ' ' + test[4] + ')');
Java单引号表示char类型,double-quote表示String类型。所以你的第一行是试图打印这些字符的值。有关重载方法,请参阅此处 https://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()。
带撇号的引号是 char
文字。 char
是一个数字基元,可以添加到其他数字基元,如 int
.
+
运算符也被重载以实现字符串连接。如果运算符的任一侧是 String
,则 +
运算符是字符串连接运算符,否则它是数字加运算符。
因此,'A' + 5
表示将字符A
的数值加5,而"A" + 5
表示将字符串A
与数字[的字符串表示形式连接起来=21=].
在您的情况下,将第一个字符更改为 String
文字就足够了。所有剩余的 +
运算符将成为字符串连接运算符:
System.out.println("(" + test[0] + ' ' + test[1] + ' ' + test[2] + ' '
+ test[3] + ' ' + test[4] + ')');
//(1 2 3 4 5)