在C++
我可以做这样的事情......
String s = "abc";
char c = s[i]; // works fine...
Run Code Online (Sandbox Code Playgroud)
但是Java
,如果我尝试做同样的事情,它会抛出一个错误.为什么?.
在java
,要实现上述目标,我必须做到:
s.toCharArray();
Run Code Online (Sandbox Code Playgroud)
Strings的实现与C++
Java中的实现有何不同?
Jon*_*eet 17
在java中,为了实现上述目的,我要做的是:s.toCharArray();
并不是的.你可以charAt
改用:
char c = s.charAt(i);
Run Code Online (Sandbox Code Playgroud)
基本上,C++允许用户定义的运算符 - Java不允许.因此String
该类不会暴露任何类型的"索引"运算符; 即只存在阵列和一个String
不是数组.(它通常使用数组实现,但这是另一回事.)
编辑:如评论中所述,+
运算符是特殊的字符串 - 在语言规范中.也可以这样做[]
,但事实并非如此 - 并且由于它不在语言规范中,并且Java不支持重载运算符,因此无法在库代码中执行.(例如,您不能+
为任何其他类提供自定义行为.)