在处理以下场景时,我正在寻找Java的行为解释.据我所知,ASCII表的排列方式使得字符的值5大于5个位置0.这允许在char上进行计算而不转换为int,如第一个例子中所示.
我不明白为什么Java似乎不一致地处理何时从ASCII表提供值以及何时对字符进行计算,就好像它们是整数一样.
int x = '5' - '0';
Run Code Online (Sandbox Code Playgroud)
产量 x = 5;
int x = '5'
Run Code Online (Sandbox Code Playgroud)
产量 x = 53;
现在举一些例子,这引起了混乱.
int x = '0' + 1 - '5'
Run Code Online (Sandbox Code Playgroud)
产量 x = -4
int y = '5' - '0' + '1'
Run Code Online (Sandbox Code Playgroud)
产量 54
int y = '5' - 0 + '1'
Run Code Online (Sandbox Code Playgroud)
产量 102
Java似乎正在进行隐式类型转换,但是Java如何推断它应该使用哪个int/char表示?
我已经在一些Java库中看到,当返回一个字符串时,该值将与一个空值连接在一起。
例如 package java.io;
/**
* The system-dependent default name-separator character, represented as a
* string for convenience. This string contains a single character, namely
* <code>{@link #separatorChar}</code>.
*/
public static final String separator = "" + separatorChar;
Run Code Online (Sandbox Code Playgroud)
为什么不只返回spacerChar?
字符串是返回值的首选数据类型吗?不管怎么说,为什么这只是一个字符,为什么要使用字符串数据类型?
进行此转换是否会对性能产生影响?