为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 foreach 不能与 String 一起使用?

为什么 foreach 不能与 String 一起使用?

白衣染霜花 2021-12-30 16:38:54
我正在尝试类似的东西String s = "test string";for(Character c: s) {}编译器报告错误。我想知道为什么我不能将 foreach 与 String 一起使用?
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

原因在JLS 14.14.2 中列出

EnhancedForStatement:
   for ( {VariableModifier} LocalVariableType VariableDeclaratorId : Expression ) Statement

...

的类型Expression必须是原始类型的子类型Iterable或数组类型(第 10.1 节),否则会发生编译时错误。

AString不是Iterable数组类型的子类型或数组类型。因此.... 编译错误。


正如@shmosel 所提到的,您可以遍历char[]返回的s.toCharArray[]. 但是,这将创建一个新数组1

1 - ... 除非您的 JVM 的 JIT 编译器足够聪明来优化它。我不认为他们目前可以做到这一点,而且我不会打赌想要实现这种优化的 Java 设计者。


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 300 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信