for循环中return返回boolean型值遇到的问题

有人帮忙看看吗,为什么第一个可以,而第二个却没有返回值


```java
有大佬帮忙看看吗,为什么第一个可以,而第二个却没有返回值

class Solution {
    public boolean containsDuplicate(int[] nums){
      Arrays.sort(nums);
        int n = nums.length;
        for (int i = 0; i < n - 1; i++) {
            if (nums[i] == nums[i + 1]) {
                return true;
               }
          }
           return false;
     }
}



class Solution {
    public boolean containsDuplicate(int[] nums){
      Arrays.sort(nums);
        int n = nums.length;
        for (int i = 0; i < n - 1; i++) {
            if (nums[i] == nums[i + 1]) { 
                return true;
               }
            else{
                return false;
               }
           }
    }
}

```

第2个 就是缺少返回值,如果n=0,for循环就不会进,再往后没有返回值,所以报错

img

for循环的执行是要判断条件的,如果条件不满足是不会执行的,那么把for循环去掉,可不就是没返回值吗

第一个的return false在循环体外边,即完成循环没有符合条件的才返回false

第二个的return false在循环体里面,当循环到第一个元素时,不论条件是否匹配,都有返回,跳出循环了