java中双引号和单引号之间的奇怪行为
只是比较了不同语言和java(java 8)中的一些行为,我尝试了一些东西,得到了奇怪的结果: 在这里,我迭代一个小字符串数组,并显示迭代器和值(没有什么特别的,我们同意…)。但是,当我更改单引号“”和双引号“”之间的sysout连接时,行为完全不同。 1-显示迭代的最终结果(当我在循环中递增时为3),它似乎从上一次迭代计算+1,因此在这种情况下,最终结果是: 33Foo 34巴 35Bazjava中双引号和单引号之间的奇怪行为,java,Java,只是比较了不同语言和java(java 8)中的一些行为,我尝试了一些东西,得到了奇怪的结果: 在这里,我迭代一个小字符串数组,并显示迭代器和值(没有什么特别的,我们同意…)。但是,当我更改单引号“”和双引号“”之间的sysout连接时,行为完全不同。 1-显示迭代的最终结果(当我在循环中递增时为3),它似乎从上一次迭代计算+1,因此在这种情况下,最终结果是: 33Foo 34巴 35Baz publicstaticvoidmain(字符串[]args){ int y=0; 字符串[]arr={
publicstaticvoidmain(字符串[]args){
int y=0;
字符串[]arr={“Foo”,“Bar”,“Baz”};
对于(int i=0;i
将上述内容更改为双引号时:
public static void main(String[] args) {
int y = 0;
String[] arr= {"Foo", "Bar", "Baz"};
for(int i = 0; i < arr.length; i++) {
y++;
System.out.println(y +" "+ arr[i]);
}
}
publicstaticvoidmain(字符串[]args){
int y=0;
字符串[]arr={“Foo”,“Bar”,“Baz”};
对于(int i=0;i
将产生预期的结果:
一福
2巴
3巴兹
有人知道为什么吗?只是想知道使用单引号和双引号的影响原因…单引号用于
char
类型。由于这是一种数字类型,执行int+char
将产生int
值
空格字符(“”
)的数值为32,因此:
1 + ' ' == 33;
单引号用于
char
类型。由于这是一种数字类型,执行int+char
将产生int
值
空格字符(“”
)的数值为32,因此:
1 + ' ' == 33;
我认为现在发生的是Java将空间视为ASCII数,并添加实际数组的索引值。这是因为Java允许类型转换。因此,当您将一个数字连接到例如“”时,它实际上将其视为一个加法操作,而不是连接 那么比如说,
我认为现在发生的是Java将空间视为其ASCII数,并添加实际数组的索引值。这是因为Java允许类型转换。因此,当您将一个数字连接到例如“”时,它实际上将其视为一个加法操作,而不是连接 那么比如说,
好的,但是它取迭代的最终结果,即3,然后从那里迭代,所以3,4,5,因为最终结果是33Foo,然后是34Bar,然后是35Baz,你明白我的意思吗?它不取迭代的最终结果。1+space=33,2+space=34,3+space=35。好的,我看到它使用ascii值…所以第一个问题的答案非常感谢:)但是为什么它不迭代并给出最后一个值呢?@kickdev您从
y=0
开始,然后执行y++
。现在y
是1
1+32(32是字符''
的值)是3333+arr[0]
=33Foo
等等。@kickdev它不迭代是什么意思?它打印三行,但是它取迭代的最终结果,即3,然后从那里迭代,所以3,4,5,因为最终结果是33Foo,然后是34Bar,然后是35Baz,你明白我的意思吗?它不取迭代的最终结果。1+space=33,2+space=34,3+space=35。好的,我看到它使用ascii值…所以第一个问题的答案非常感谢:)但是为什么它不迭代并给出最后一个值呢?@kickdev您从y=0
开始,然后执行y++
。现在y
是1
1+32(32是字符''
的值)是3333+arr[0]
=33Foo
等等。@kickdev它不迭代是什么意思?它打印三行。