>  기사  >  Java  >  Java에서 for와 foreach의 차이점은 무엇입니까?

Java에서 for와 foreach의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2020-10-19 11:22:465571검색

차이점: 1. foreach는 루프 수를 알 수 없거나 루프 수를 계산하기 어려울 때 더 효율적이지만 for는 더 복잡한 루프에서 더 효율적입니다. 2. foreach는 루프에서 추가 및 삭제 작업을 지원하지 않습니다. , 배열이나 컬렉션은 수정할 수 없지만 for 루프는 수정할 수 있습니다.

Java에서 for와 foreach의 차이점은 무엇입니까?

관련 권장 사항: "Java 비디오 튜토리얼"

우선 foreach에 대해 이야기해 보겠습니다. foreach는 실제로 for 루프의 특별하고 단순화된 버전입니다.

foreach의 작성 형식에 대해 이야기해 보겠습니다.

for(元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){
语句
 }

foreach는 for 루프의 단순화된 버전이지만 foreach가 for보다 더 유용하다는 의미는 아닙니다. 루프를 알 수 없거나 루프 수를 계산하는 것이 번거로운 경우도 있지만, 일부 더 복잡한 루프에서는 여전히 for 루프를 사용해야 더 효율적입니다.

다음 예를 살펴보겠습니다.

public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循环
  for(String str : arr){       //这里的str就是为了获取每次循环的arr中的值
   System.out.println(str);       //就相当于 String str=arr[i]
  }
 }

하지만 이에 비해 for 루프를 사용하여 입력하는 것은 약간 번거롭습니다

public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //for循环
  for(int i=0;i<arr.size();i++){
   System.out.println(arr.get(i)); //要获取list中元素需要用get方法 
  }
 }

이 일반적인 컬렉션 외에도 map과 같은 키-값 쌍에 사용됩니다.

예:

public static void main(String[] args) {
  Map<String,String> mapstr = new HashMap<String,String>();
  mapstr.put("王", "男");
  mapstr.put("李", "男");
  mapstr.put("张", "女");
                      //entrySet方法是为了获取键值对的集合
  for(Map.Entry<String, String> s : mapstr.entrySet()){ //这里的Map.Entry<String, String>其实就是一个类型 用来表示键值对的类型
   System.out.println("key="+s.getKey());   //这里其实还是相当于 s=maostr.entrySet,只不过s存储的是键值对。
   System.out.println("value="+s.getValue());  //所以可以用get方法获取出来存储的键值对。
  }
 }

또한 foreach는 루프에서 삭제 작업 추가를 지원하지 않습니다. 왜냐하면 foreach 루프를 사용할 때 배열(컬렉션)이 이미 잠겨 있어 수정할 수 없기 때문입니다. 그렇지 않으면 java.util.ConcurrentModificationExceptionException

이 보고됩니다.

예:

public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循环
  for(String str : arr){     
   System.out.println(str);   
   arr.add("1");     //对arr进行添加 
  }
 }

요약은 다음과 같습니다.

foreach는 컬렉션이나 배열을 순회하는 데 적합하지만 for는 더 효율적입니다. 더 복잡한 루프에서.

foreach는 배열이나 컬렉션을 수정할 수 없습니다(작업 추가 또는 삭제). 수정하려면 for 루프를 사용해야 합니다.

따라서 for 루프는 이에 비해 더 유연합니다.

위 내용은 Java에서 for와 foreach의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.