为什么java字符打印号码?
我有以下课程,请参阅
public class Go { public static void main(String args[]) { System.out.println("G" + "o"); System.out.println('G' + 'o'); } }
这是编译结果;
Go 182
为什么我的输出包含数字?
- 部署时,我的一个云端点方法出现500内部服务器错误
- 同一个库的多个版本
- Android – Processing Build不编译
- 将String month转换为整数java
- Google App Engine和Java版本?
在第二种情况下,它添加两个字符(G-71和o-111)的unicode代码并打印总和。 这是因为char
被认为是数字类型,因此在这种情况下+
运算符是通常的求和。
+
运算符,字符常量'G' + 'o'
打印添加charCode和字符串连接运算符与"G" + "o"
将打印Go
。
System.out.println("G" + "o"); System.out.println('G' + 'o');
第一个+作为一个连续的操作员并且连接两个字符串。 但在第二种情况下,它充当了一个加法运算符,并添加了这两个字符的ASCII(或者你说的是UNICODE)值。
Java中的加号会添加两个数字,除非其中一个是一个String,在这种情况下它会进行字符串连接。
在第二种情况下,您没有字符串(您有char
,它们的Unicode代码点将被添加)。
这个先前的SO问题应该对这个问题有所了解,在你的情况下,你基本上最终添加了他们的ASCII值(对于G为71)+(对于o为111)= 182,你可以在这里查看值)。
您必须使用String.valueOf(char c)
将该字符转换回字符串。
“+”运算符是为int
和String
定义的:
int + int = int String + String = String
添加char + char时,最佳匹配将是:
(char->int) + (char->int) = int
但是""+'a'+'b'
会给你ab
:
( (String) + (char->String) ) + (char->String) = String
+总是用于sum
(添加两个数字的目的)如果它是除String
之外的数字,如果它是String
则用于两个String
串联目的。
我们知道java中的char总是表示数字 。
这就是为什么在你的情况下,它实际上计算两个数字的总和为(71+111)=182
而不是字符的连接为g
+ o
= go
如果您将其中一个更改为String
那么它将连接两个,如System.out.println('G' + "o")
,它将按预期打印Go
。
- 我是否可以将流上传到Azure blob存储而不预先指定其长度?
- java.lang.IllegalArgumentException:找不到片段FmMenu的id 0x7f090047(“项目名称”:id / content)的视图
- 如何用图像中的蓝色半透明替换我的Android应用程序谷歌地图半径圆?
- 为什么不禁止访问私有字段?
- 使用“简单”XML序列化从Android上的res / raw加载数据
- Facebook API如何等待graphRequest executeAsync完成
- 无法使用Java API连接到ElasticSearch服务器
- 线程“main”中的exceptionjava.util.IllegalFormatConversionException:d!= java.lang.String
- 使用Java从网页中提取数据?