为什么在 Java 中,当 String 是一个类时,您可以使用 + 运算符添加字符串?在里面String.java
代码我没有找到这个运算符的任何实现。这个概念违反了面向对象吗?
我们看一下Java中的以下简单表达式
int x=15;
String temp="x = "+x;
编译器转换"x = "+x;
into a StringBuilder
内部并使用.append(int)
将整数“添加”到字符串中。
5.1.11.字符串转换 http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.11
任何类型都可以通过字符串转换转换为 String 类型。
原始类型 T 的值 x 首先转换为引用值
就好像将其作为参数提供给适当的类实例
创建表达式(§15.9):
- 如果 T 是布尔值,则使用 new Boolean(x)。
- 如果 T 是 char,则使用 new Character(x)。
- 如果 T 是 byte、short 或 int,则使用 new Integer(x)。
- 如果 T 很长,则使用 new Long(x)。
- 如果 T 是 float,则使用 new Float(x)。
- 如果 T 是 double,则使用 new Double(x)。
然后将这个引用值逐个字符串转换为String类型
转换。
现在只需要考虑参考值:
- 如果引用为 null,则将其转换为字符串“null”(四个 ASCII 字符 n、u、l、l)。
- 否则,转换就像通过调用不带参数的引用对象的 toString 方法来执行;但
如果调用toString方法的结果为null,则
使用字符串“null”代替。
The toString method is defined by the primordial class Object
(§4.3.2). Many classes override it, notably Boolean, Character,
Integer, Long, Float, Double, and String.
有关字符串转换上下文的详细信息,请参阅第 5.4 节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)