Mảng Trong Java - KungFu Tech

Java cung cấp cho chúng ta rất nhiều cấu trúc dữ liệu, trong đó array là một cấu trúc cho phép lưu trữ một tập hợp các dữ liệu cùng loại, tuần tự và có số lượng xác định.

Cứ tưởng tượng nếu chúng ta cần sử dụng đến 100 biến int để lưu trữ data, thì chỉ với việc khai báo chúng ta đã ngốn hết 100 dòng code. Java cung cấp cho chúng ta rất nhiều cấu trúc dữ liệu, trong đó array là một cấu trúc cho phép lưu trữ một tập hợp các dữ liệu cùng loại, tuần tự và có số lượng xác định.

java Copy int[] arr = new int[100];

Khai báo mảng trong java

Cú pháp khai báo mảng trong java

java Copy <Kiểu dữ liệu>[] <tên mảng>;

Khởi tạo mảng

Cách 1: Khởi tạo không gán giá trị ban đầu

java Copy <Kiểu dữ liệu>[] <tên mảng> = new <kiểu dữ liệu>[số lượng phần tử];

Cách 2: Khởi tạo có giá trị ban đầu

java Copy <Kiểu dữ liệu>[] <tên mảng> = {value 0, value 1, ... value n};

Mảng hoạt động như thế nào

Một mảng sẽ có chỉ số index từ 0 đến n – 1 (n là số lượng phần tử của mảng).

Ví dụ: Khởi tạo mảng số nguyên 10 phần tử, có giá trị tuần tự từ 1 đến 10. Và xuất các giá trị của mảng ra màn hình console.

java Copy public class Thaycacac { public static void main(String[] args) { int[] arr = new int[10]; for (int i = 0; i < 10; i++) { arr[i] = i + 1; } for(int item : arr) { System.out.print(item + " "); } } }

Kết quả

1 2 3 4 5 6 7 8 9 10

Mảng trong java

Trong một mảng phần tử đầu tiên (index = 0) gọi là foundation address. Các phần tử khác sẽ được truy xuất dựa vào phần tử đầu tiên.

Truy xuất các phần tử của mảng

Chúng ta có 2 cách để truy xuất các phần tử của mảng

  • Truy xuất trực tiếp
  • Truy xuất tuần tự

Truy xuất trực tiếp

java Copy <mảng>[vị trí phần tử trong mảng];

Ví dụ: truy xuất phần tử thứ 5 của mảng

java Copy public class Thaycacac { public static void main(String[] args) { // Khoi tao mang int[] arr = new int[10]; for (int i = 0; i < 10; i++) { arr[i] = i + 1; } System.out.println(arr[5]); } }

Kết quả

6

Nếu index vượt ra khoảng chứa của mảng thì chúng ta sẽ bị ném một ngoại lệ. Khoảng hợp lệ 0 đến n – 1 ( n số lượng phần tử của mảng).

Ví dụ khi mình truy xuất arr[10] là vị trí không hợp lệ mình sẽ được kết quả sau:

Kết quả

Exception in thread “main” ava.lang.ArrayIndexOutOfBoundsException: 10 at Main.main(Main.java:11)

Truy xuất tuần tự

Sử dụng vòng lặp for truyền thống

java Copy for(int i = 0; i < 10; i++) { System.out.println(i); }

Sử dụng foreach

java Copy for(int item : arr) { System.out.println(item); }

Passing by reference

Khi truyền mảng vào một method và xử lý trên các phần tử thì sẽ thay đổi giá trị của mảng ban đầu.

Ví dụ: tăng mỗi phần tử trong mảng lên mảng lên 1 và in ra màn hình console.

java Copy public class Thaycacac { public static void main(String[] args) { // Khoi tao mang int[] arr = new int[10]; for (int i = 0; i < 10; i++) { arr[i] = i + 1; } increment(arr); for(int item : arr) { System.out.print(item + " "); } } public static void increment(int[] arr) { for (int i = 0; i < 10; i++) { arr[i] += 1; } } }

Kết quả

2 3 4 5 6 7 8 9 10 11

Chúng ta thấy hàm increment() đã thay đổi các giá trị trong mảng. Vì vậy ở hàm main truy xuất được mảng đã được update bởi increment().

Thao tác cơ bản trên mảng

Java cung cấp cho chúng ta một số thao tác cơ bản mà chúng ta thường xuyên sử dụng như sắp xếp, so sánh, ...

Ví dụ:

java Copy public static int binarySearch(Object[] a, Object key) // Tìm kiếm phần tử key trong mảng, điều kiện mảng đã được sắp xếp public static boolean equals(long[] a, long[] a2) // So sánh 2 mảng, trả về true nếu bằng nhau(index, value), ngược lại false public static void fill(int[] a. int val) // Khởi tạo mảng với giá trị được gán sẵn val public static void sort(Object[] a) // Sắp xếp mảng tăng dần

Ví dụ: hàm sort

java Copy import java.util.Arrays; public class Thaycacac { public static void main(String[] args) { // Khởi tạo mảng int[] arr = {5, 2, 0, -4, 3, 9}; Arrays.sort(arr); for (int item : arr) { System.out.print(item + " "); } } }

Kết quả

-4 0 2 3 5 9

Từ khóa » Gán Giá Trị Cho Mảng Java