Mảng - Khai báo mảng
Mảng trong Java là một tập hợp các biến có cùng kiểu. Mảng dùng đến khi cần lưu giữ danh sách các giá trị như các số
Để khai báo mảng cần chỉ ra kiểu dữ liệu của các phần tử tiếp theo là []
Ví dụ sau khai báo một mảng số nguyên có tên arr
int[] arr;
Bây giờ, bạn cần số phần tử có thể lưu trữ trong mảng. Để làm điều này bạn dùng từ khóa new gán ngay tại khai báo hoặc gán sau với cú pháp
int[] arr = new int[5];Hoặc
int[] arr; arr = new int[5];
Đoạn mã trên tạo ra mạng lưu được 5 phần tử. Trong mảng mỗi phần tử có một hằng số để xác định vị trí của nó trang mảng gọi là chỉ số (index). Để trỏ đến phần tử trong mảng cần viết tên mảng và theo sau là chỉ số nằm trong cặp ngoặc vuông []
Ví dụ gán giá trị cho phần tử mảng thứ 3
arr[2] = 42;
Lưu ý là chỉ số mảng bắt đầu từ 0, nên phần tử thứ 3 sẽ có chỉ số là 2.
Khởi tạo giá trị cho mảng
Java cung cấp cách nhanh chóng để khởi tạo giá trị mảng các kiểu nguyên thủy khi bạn đã biết giá trị của nó và chèn ngay vào các phần tử mảng
public class Program { public static void main(String[] args) { String[] myNames = { "A", "B", "C", "D"}; System.out.println(myNames[2]); } } // output is C
Các giá trị trong mảng cách nhau bởi dấu phảy ,
nằm trong cặp {}
. Như ví dụ trên khởi tạo mảng với 4 phần tử, lưu trữ các giá trị được cung cấp.
Nếu gán sau bằng cách tạo mảng với new thì khởi tạo giá trị như sau:
public class Program { public static void main(String[] args) { String[] myNames; myNames = new String [] { "A", "B", "C", "D"}; System.out.println(myNames[2]); } } // output is C
Duyệt qua các phần tử mảng
Lấy số phần tử mảng
Mỗi đối tượng mảng, có thuộc tính length là số phần tử có trong mảng.
public class Program { public static void main(String[] args) { int[ ] intArr = new int[5]; System.out.println(intArr.length); } } // output 5
Duyệt qua phần tử mảng với vòng lặp for
Khi đã có số lượng phần tử mảng, dễ dàng duyệt qua từng phần tử với vòng lặp for. Ví dụ sau tính tổng cộng giá trị các phần tử mảng
public class Program { public static void main(String[] args) { int [] myArr = {6, 42, 3, 7}; int sum=0; for(int x=0; x < myArr.length; x++) { sum += myArr[x]; } System.out.println(sum); } } // output 58
Ngoài cách sử dụng for tạo vòng lặp dựa vào số phần tử như trên, bạn cũng có thể duyệt qua các phần tử mảng theo cú pháp
for (datatype varname : arrayname) { //varname là phần tử mảng lấy được }
Câu lệnh trên duyệt qua các phần tử mảng từ đầu đến cuối, áp dụng sửa lại ví dụ trên
public class Program { public static void main(String[] args) { int [] myArr = {6, 42, 3, 7}; int sum=0; for (int ele: myArr) sum += ele; System.out.println(sum); } } // output 58
Mảng nhiều chiều
Mảng nhiều chiều là mảng nó chứa mảng khác. Mảng hai chiều phổ biến nhất. Để tạo mảng nhiều chiều thì cần chỉ ra số cặp ngoặc vuông khi khai báo bằng số chiều.
Tạo ra mảng hai chiều
//Mảng hai dòng và ba cột int[][] sample = { {1, 2, 3}, {4, 5, 6} };
Để trỏ đến phần tử mảng, chỉ cần cung cấp số chỉ số theo số chiều, ví dụ:
public class Program { public static void main(String[] args) { int[][] sample = {{1, 2, 3}, {4, 5, 6} }; //hoặc sample = new int[][]{{1, 2, 3}, {4, 5, 6} }; int x; x=sample[0][0]; System.out.println(x); x=sample[0][1]; System.out.println(x); x=sample[0][2]; System.out.println(x); x=sample[1][0]; System.out.println(x); x=sample[1][1]; System.out.println(x); x=sample[1][2]; System.out.println(x); } } /*Xuất ra 1 2 3 4 5 6 */
Phương thức tĩnh từ Arrays
Java có lớp java.util.Arrays trong đó có một số phương thức tĩnh làm việc với mảng như
binarySearch
public static int binarySearch(Object[] a, Object key)
Tìm kiếm trong mảng a phần tử có giá trị key
bằng thuật toán tìm kiếm nhị phân. Lưu ý mảng cần được sắp xếp trước khi tìm kiếm.
Nó trả về chỉ số phần tử tìm được, nếu khác trả về giá trị nhở hơn 0
equals
public static boolean equals(long[] a, long[] a2)
Trả về true nếu giá trị các phần tử tương ứng của hai mảng giống nhau.
fill
Tất cả các phần tử của mảng được gán bởi một giá trị cung cấp
public static void fill(int[] a, int val)
sort
Sắp xếp lại các phần tử (tăng dần)
public static void sort(Object[] a)
import java.util.Arrays; public class ArrayDemo { public static void main(String[] args) { int iArr[] = {2, 1, 9, 6, 4}; for (int number : iArr) { System.out.println("Number = " + number); } // sắp xếp mảng java.util.Arrays.sort(iArr); System.out.println("Mảng đã sắp xếp lại:"); for (int number : iArr) { System.out.println("Number = " + number); } } } /* Number = 2 Number = 1 Number = 9 Number = 6 Number = 4 Mảng đã sắp xếp lại: Number = 1 Number = 2 Number = 4 Number = 6 Number = 9 */