C++和Java中的字符串之间的区别

The*_*ind 13 c++ java string

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不支持重载运算符,因此无法在库代码中执行.(例如,您不能+为任何其他类提供自定义行为.)