Vòng do-while rất giống với vòng while, khác biệt là ở chỗ thân vòng lặp sẽ được thực hiện trước, sau đó mới kiểm tra điều kiện lặp, nếu đúng thì quay lại chạy thân vòng lặp, nếu sai thì dừng vòng lặp. Khác biệt đó có nghĩa rằng thân của vòng do-while luôn được chạy ít nhất một lần, trong khi thân vòng while có thể không được chạy lần nào.
Công thức của vòng do-while tổng quát là:
do
thân_vòng_lặp
while (điều_kiện_lặp);
Tương tự như ở vòng while, thân_vòng_lặp của vòng do-while có thể chỉ gồm một lệnh hoặc thường gặp hơn là một chuỗi lệnh được bọc trong một cặp ngoặc { }. Lưu ý dấu chấm phảy đặt cuối toàn bộ khối do-while.
Công thức tổng quát của vòng do-while ở trên tương đương với công thức sau nếu dùng vòng while:
thân_vòng_lặp
while (điều_kiện_lặp)
thân_vòng_lặp
Để minh họa hoạt động của hai cấu trúc lặp while và do-while, ta so sánh hai đoạn mã dưới đây:
count = 1;
while (count <= number) {
System.out.print(count + ", ");
count++;
}
và:
count = 1;
do {
System.out.print(count + ", ");
count++;
} while (count <= number);
Hai đoạn mã chỉ khác nhau ở chỗ một bên trái dùng vòng while, bên phải dùng vòng do-while, còn lại, các phần thân vòng lặp, điều kiện, khởi tạo đều giống hệt nhau. Đoạn bên trái được lấy từ ví dụ trong mục trước, nó in ra các số từ 1 đến number. Đoạn mã dùng vòng do-while bên phải cũng thực hiện công việc giống hệt đoạn bên trái, ngoại trừ một điểm: khi number nhỏ hơn 1 thì nó vẫn đếm 1 trước khi dừng vòng lặp – thân vòng lặp chạy một lần trước khi kiểm tra điều kiện.