java - 在字符串声明中使用算术运算符时会发生什么?

标签 java string math

如果字符串声明中有算术运算符,字符串如何处理运算符?
例如在这种情况下:

String s = "de32";
s = s.charAt(0) * 2 + "";   
System.out.println(s);

字符串 s 不是 dd,而是 102* 2 对字符串意味着什么?

最佳答案

s.charAt(0)是一个char('d'),char是一个数字类型。字符'd' 的数值是100。因此 s.charAt(0) * 2 只是将该值乘以 2,结果是 200(不是 102 如你所写)。

然后将结果转换为 String,因为您向其附加了一个空 String,所以 s 被分配了 "200"

表达式是从左到右求值的,所以它等价于:

s = (s.charAt(0) * 2) + "";
  • 首先,char 'd' 被提升为 int 并乘以 2
  • 然后将生成的 int (200) 附加到空的 String ""。产生 String“200”。

关于java - 在字符串声明中使用算术运算符时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017204/

相关文章:

c - 用于转义字符串的标准 C 库

javascript - 旋转时使用拖动 handle 调整 div 大小

objective-c - 计算垂直于另一条线的中点的线

java - fragment 中的 AutoCompleteTextView 获取 NullPointerException

java - Prim算法的实现

java - 为什么CopyOnWriteArrayList在写入时会复制?

python - Python 中的浮点精度

java - 避免在Eclipse中下载Gradle依赖项

c - c中的固定长度字符串数组

java - Stringformatter 可以重用参数吗?