If a loop exists inside the body of another loop, it's called a nested loop. Here's an example of the nested for loop.
// outer loop
for (int i = 1; i <= 5; ++i) {
  // codes
  // inner loop
  for(int j = 1; j <=2; ++j) {
    // codes
  }
..
}
Here, we are using a for loop inside another for loop.
We can use the nested loop to iterate through each day of a week for 3 weeks.
In this case, we can create a loop to iterate three times (3 weeks). And, inside the loop, we can create another loop to iterate 7 times (7 days).
Example 1: Java Nested for Loop
class Main {
  public static void main(String[] args) {
    int weeks = 3;
    int days = 7;
    // outer loop prints weeks
    for (int i = 1; i <= weeks; ++i) {
      System.out.println("Week: " + i);
      // inner loop prints days
      for (int j = 1; j <= days; ++j) {
        System.out.println("  Day: " + j);
      }
    }
  }
}
Output
Week: 1
  Day: 1
  Day: 2
  Day: 3
    .....  ..  ....
Week: 2
  Day: 1
  Day: 2
  Day: 3
  ....  ..  ....
....  .. ....
In the above example, the outer loop iterates 3 times and prints 3 weeks. And, the inner loop iterates 7 times and prints the 7 days.
We can also create nested loops with while and do...while in a similar way.
Note: It is possible to use one type of loop inside the body of another loop. For example, we can put a for loop inside the while loop.
Example 2: Java for loop inside the while loop
class Main {
  public static void main(String[] args) {
    int weeks = 3;
    int days = 7;
    int i = 1;
    // outer loop
    while (i <= weeks) {
      System.out.println("Week: " + i);
      // inner loop
      for (int j = 1; j <= days; ++j) {
        System.out.println("  Days: " + j);
      }
      ++i;
    }
  }
}
Output:
Week: 1 Day: 1 Day: 2 Day: 3 .... .. .... Week: 2 Day: 1 Day: 2 Day: 3 .... .. .... .... .. ....
Here you can see that the output of both Example 1 and Example 2 is the same.
Example 3: Java nested loops to create a pattern
We can use the nested loop in Java to create patterns like full pyramid, half pyramid, inverted pyramid, and so on.
Here is a program to create a half pyramid pattern using nested loops.
class Main {
  public static void main(String[] args) {
    int rows = 5;
    // outer loop
    for (int i = 1; i <= rows; ++i) {
      // inner loop to print the numbers
      for (int j = 1; j <= i; ++j) {
        System.out.print(j + " ");
      }
      System.out.println("");
    }
  }
}
Output
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
To learn more, visit the Java program to print pyramid and patterns.
break and continue Inside Nested Loops
When we use a break statement inside the inner loop, it terminates the inner loop but not the outer loop. For example,
class Main {
  public static void main(String[] args) {
    
    int weeks = 3;
    int days = 7;
    // outer loop
    for(int i = 1; i <= weeks; ++i) {
      System.out.println("Week: " + i);
      // inner loop
      for(int j = 1; j <= days; ++j) {
        
        // break inside the inner loop
        if(i == 2) {
          break;
        }
        System.out.println("  Days: " + j);
      }
    }
  }
}
Output
Week: 1 Day: 1 Day: 2 .... .. .... Week: 2 Week: 3 Day: 1 Day: 2 .... .. .... .... .. ....
In the above example, we have used the break statement inside the inner for loop. Here, the program skips the loop when i is 2.
Hence, days for week 2 are not printed. However, the outer loop that prints week is unaffected.
Similarly, when we use a continue statement inside the inner loop, it skips the current iteration of the inner loop only. The outer loop is unaffected. For example,
class Main {
  public static void main(String[] args) {
    
    int weeks = 3;
    int days = 7;
    // outer loop
    for(int i = 1; i <= weeks; ++i) {
      System.out.println("Week: " + i);
      // inner loop
      for(int j = 1; j <= days; ++j) {
        
        // continue inside the inner loop
        if(j % 2 != 0) {
          continue;
        }
        System.out.println("  Days: " + j);
      }
    }
  }
}
Output
Week: 1 Days: 2 Days: 4 Days: 6 Week: 2 Days: 2 Days: 4 Days: 6 Week: 3 Days: 2 Days: 4 Days: 6
In the above example, we have used the continue statement inside the inner for loop. Notice the code,
if(j % 2 != 0) {
  continue;
}
Here, the continue statement is executed when the value of j is odd. Hence, the program only prints those days that are even.
We can see the continue statement has affected only the inner loop. The outer loop is working without any problem.