Looping dalam bahasa pemrograman adalah fitur yang memfasilitasi eksekusi sekumpulan instruksi / fungsi secara berulang-ulang saat beberapa kondisi bernilai true. Java menyediakan tiga cara untuk menjalankan loop. Meskipun semua cara menyediakan fungsionalitas dasar yang serupa, mereka berbeda dalam sintaksis dan waktu pemeriksaan kondisinya.
1. While Loop
While Loop adalah pernyataan aliran kontrol (control flow statement) yang memungkinkan kode dieksekusi berulang kali berdasarkan kondisi Boolean tertentu. Perulangan while dapat dianggap sebagai pernyataan if yang berulang.
Sintaks:
while (boolean kondisi)
{
pernyataan loop...
}
// Program Java untuk menggambarkan while loop
class whileLoopDemo
{
public static void main(String args[])
{
int x = 1;
// Keluar saat x menjadi lebih besar dari 4
while (x <= 4)
{
System.out.println("Nilai x:" + x);
// Tingkatkan nilai x
// iterasi berikutnya
x++;
}
}
}
OUTPUT:
Nilai x: 1
Nilai x: 2
Nilai x: 3
Nilai x: 4
2. For Loop
For loop menyediakan cara ringkas untuk menulis struktur loop. Tidak seperti while loop, pernyataan For menggunakan inisialisasi, kondisi dan kenaikan / penurunan dalam satu baris sehingga memberikan struktur perulangan yang lebih pendek dan mudah untuk di-debug.
Sintaks:
for (kondisi inisialisasi; kondisi pengujian; increment/decrement)
{
pernyataan
}
// Program Java untuk menggambarkan for loop
class forLoopDemo
{
public static void main(String args[])
{
// for loop dimulai ketika x = 2
// dan berjalan sampai x <= 4
for (int x = 2; x <= 4; x++)
System.out.println("Nilai x:" + x);
}
}
OUTPUT:
Nilai x: 2
Nilai x: 3
Nilai x: 4
Enhanced For loop
Java juga menyertakan versi lain dari perulangan For yang diperkenalkan di Java 5. Perulangan For yang disempurnakan menyediakan cara yang lebih sederhana untuk melakukan iterasi melalui elemen-elemen collection atau array. Hal ini tidak fleksibel dan harus digunakan hanya jika ada kebutuhan untuk melakukan iterasi melalui elemen secara berurutan tanpa mengetahui indeks elemen yang sedang diproses.
Juga perhatikan bahwa objek / variabel tidak dapat diubah ketika enhanced for loop digunakan yang mana hal ini untuk memastikan bahwa nilai-nilai dalam array tidak dapat dimodifikasi, sehingga dapat dikatakan sebagai read-only loop di mana kita tidak dapat memperbarui nilai, kebalikannya dari loop lainnya di mana nilai dapat dimodifikasi. Kami merekomendasikan penggunaan bentuk pernyataan For ini daripada bentuk umum jika memungkinkan. (Sesuai dokumentasi JAVA.)
Sintaks:
for (T element:Collection obj/array)
{
pernyataan
}
Mari kita ambil contoh untuk mendemonstrasikan bagaimana enhanced for loop dapat digunakan untuk menyederhanakan pekerjaan. Misalkan ada array nama dan kita ingin mencetak semua nama di array tersebut. Mari kita lihat perbedaannya dengan contoh di bawah ini:
// Program Java untuk mengilustrasikan enhanced for loop
public class enhancedforloop
{
public static void main(String args[])
{
String array[] = {"Andi", "Iwan", "Wati"};
//enhanced for loop
for (String x:array)
{
System.out.println(x);
}
/* for loop untuk fungsi yang sama
for (int i = 0; i < array.length; i++)
{
System.out.println(array[i]);
}
*/
}
}
OUTPUT:
Andi
Iwan
Wati
3. Do While
Do while loop mirip dengan while loop dengan perbedaan hanya memeriksa kondisi setelah menjalankan pernyataan, dan oleh karena itu merupakan contoh dari Exit Control Loop.
Sintaks:
do
{
pernyatan..
}
while (kondisi);
// Program Java untuk mengilustrasikan do-while loop
class dowhileloopDemo
{
public static void main(String args[])
{
int x = 21;
do
{
// Hasil akan dicetak meskipun kondisinya salah
System.out.println("Nilai x:" + x);
x++;
}
while (x < 20);
}
}
OUTPUT:
Nilai x: 21
Perlu Diperhatikan Saat Menggunakan Loop
Perulangan tak terbatas (Infinite loop): Salah satu kesalahan paling umum saat menerapkan perulangan jenis apa pun adalah bahwa ia mungkin tidak pernah keluar, yaitu perulangan berjalan untuk waktu yang tak terbatas. Ini terjadi ketika kondisi gagal karena beberapa alasan.
Contoh:
// Program Java untuk mengilustrasikan berbagai kesalahan
public class LoopzonkDemo
{
public static void main(String[] args)
{
// loop tak terbatas karena kondisinya tidak tepat
// kondisi seharusnya i> 0.
for (int i = 5; i != 0; i -= 2)
{
System.out.println(i);
}
int x = 5;
// loop tak terbatas karena pernyataan update
// tidak disediakan.
while (x == 5)
{
System.out.println("In the loop");
}
}
}
Perangkap lain adalah bahwa kita mungkin menambahkan sesuatu ke dalam objek koleksi melalui loop dan mengakibatkan kehabisan memori. Jika kita mencoba dan menjalankan program di bawah ini, setelah beberapa waktu akan terjadi out of memory exception.
// Program Java untuk mengilustrasikan out of memory exception
import java.util.ArrayList;
public class Integer1
{
public static void main(String[] args)
{
ArrayList<Integer> ar = new ArrayList<>();
for (int i = 0; i < Integer.MAX_VALUE; i++)
{
ar.add(i);
}
}
}
OUTPUT:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.grow(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at article.Integer1.main(Integer1.java:9)
EmoticonEmoticon