Rol*_*all 2 java compiler-construction stringbuilder
鉴于以下代码段,我有一个小问题:
StringBuilder stringBuild = new StringBuilder(3);
stringBuild.append("hello");
System.out.println(stringBuild+2); // if I omit the (+2) bit hence only stringBUild it works
Run Code Online (Sandbox Code Playgroud)
是否toString()
仅在某些情况下自动调用对象?(情况:根本没有操作或以前的字符串继承)
编译器从不toString()
隐式调用方法参数.
你可能想到的是,有一个重载System.out.println
需要一个Object
(而不是一个字符串) - 这是编译器链接到的方法.并且该方法的这个特定实现调用toString
传入的Object(在运行时).这只是代码,它与编译器行为无关.
所以传入一个对象System.out.println
"工作".传入stringBuild+2
只是不编译 - 没有+
运算符在StringBuilder
其上采用int.(并且你不能自己创建一个,因为Java不允许运算符重载.)
正如ADTC和tom指出的那样,有一个隐式字符串转换,第二个参数是字符串连接(字符串的+
运算符).因此,虽然stringBuild
没有+
运营商,stringBuild.toString()
但是,你可以打电话stringBuild.toString()+2
.
归档时间: |
|
查看次数: |
51 次 |
最近记录: |