我正在尝试类似的东西
String s = "test string";
for(Character c: s) {
}
Run Code Online (Sandbox Code Playgroud)
编译器报告错误。我想知道为什么我不能将 foreach 与 String 一起使用?
原因在JLS 14.14.2中阐述:
\n\n\nRun Code Online (Sandbox Code Playgroud)\nEnhancedForStatement:\n for ( {VariableModifier} LocalVariableType VariableDeclaratorId : Expression ) Statement \n...
\n的类型
\nExpression必须是原始类型的子类型Iterable或数组类型(\xc2\xa710.1)的子类型,否则会出现编译时错误。
AString不是数组类型的子类型Iterable或数组类型。因此....编译错误。
正如 @shmosel 提到的,您可以迭代char[]返回的s.toCharArray(). 但是,这将创建一个新数组1。
1 - ...除非你的 JVM JIT 编译器足够聪明,可以优化它。我认为他们目前无法做到这一点,并且我不会打赌 Java 设计者想要实现这种优化。
\n| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |