- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java
Bài 18: Mảng (Array) trong Java - Lập trình Java cơ bản
Đăng bởi: Admin | Lượt xem: 4700 | Chuyên mục: Java
1. Mảng là gì?
Trong Java, mảng (array) là một tập hợp các phần tử có cùng kiểu dữ liệu, có địa chỉ tiếp nhau trên bộ nhớ (memory). Mảng có số phần tử cố định và bạn không thể thay đổi kích thước của nó.
Các phần từ trong mảng được đánh số bắt đầu từ chỉ số 0, bạn có thể truy cập đến các phần tử của nó thông qua chỉ số.
Ngoài các mảng 1 chiều, đôi khi bạn cũng phải làm việc với mảng 2 chiều hoặc nhiều chiều. Một mảng 2 chiều, các phần tử của nó sẽ được đánh hai chỉ số, chỉ số hàng và chỉ số cột.
2. Mảng một chiều
Cách khai báo
package com.company;
public class Main {
public static void main(String args[]) {
// Khai báo một mảng, chưa chỉ rõ số phần tử.
int[] arr1;
// Khởi tạo mảng với 100 phần tử
// Các phần tử chưa được gán giá trị cụ thể
arr1 = new int[100];
// Khai báo một mảng, và chỉ rõ số phần tử
// Các phần tử chưa được gán giá trị cụ thể
int[] arr2 = new int[10];
// Khai báo một mảng với các phần tử được gán giá trị cụ thể.
// Mảng này có 5 phần tử
int[] arr3 = {10, 20, 30, 40, 50};
}
}
Để gán giá trị cho từng phần tử trong mảng, ta có thể gán trực tiếp từng phần tử một, hoặc sử dụng vòng lặp. Tương tự việc truy nhập đến các phần tử trong màng cũng như vậy.
Ví dụ:
package com.company;
public class Main {
public static void main(String args[]) {
int[] arr = new int[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
10
20
30
40
50
Một số phương thức thuận tiện khi sử dụng Array:
// Truyền vào các tham số cùng kiểu, và trả về một danh sách (List).
public static <T> List<T> asList(T... a)
// Kiểu X có thể là: byte, char, double, float, long, int, short, boolean
----------------------
// Tìm kiếm chỉ số của một giá trị xuất hiện trong mảng.
// (Sử dụng thuật toán tìm kiếm nhị phân (binary search))
public static int binarySearch(X[] a, X key)
// Copy các phần tử của một mảng để tạo ra một mảng mới với độ dài chỉ định.
public static int[] copyOf(X[] original, X newLength)
// Copy một phạm vi chỉ định các phần tử của mảng để tạo một mảng mới
public static double[] copyOfRange(X[] original, int from, int to)
// So sánh hai mảng
public static boolean equals(X[] a, long[] a2)
// Gán cùng một giá trị cho tất cả các phần tử của mảng.
public static void fill(X[] a, X val)
// Chuyển một mảng thành chuỗi (string)
public static String toString(X[] a)
Ví dụ:
package com.company;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String args[]) {
int[] years = new int[] { 1997, 1994, 1998};
// Sắp xếp
Arrays.sort(years);
for (int year : years) {
System.out.println("Year: " + year);
}
// Chuyển một mảng thành chuỗi
String yearsString = Arrays.toString(years);
System.out.println("Years: " + yearsString);
// Tạo danh sách (List) từ một vài giá trị.
List<String> names = Arrays.asList("Huy", "Bien", "Nguyen");
for (String name : names) {
System.out.println("Name: " + name);
}
}
}
Year: 1994
Year: 1997
Year: 1998
Years: [1994, 1997, 1998]
Name: Huy
Name: Bien
Name: Nguyen
3. Mảng hai chiều
Cách khai báo:
// Khai báo một mảng có 5 dòng, 10 cột
MyType[][] myArray1 = new MyType[5][10];
// Khai báo một mảng 2 chiều có 5 dòng.
// (Mảng của mảng)
MyType[][] myArray2 = new MyType[5][];
// Khai báo một mảng 2 chiều, chỉ định giá trị các phần tử.
MyType[][] myArray3 = new MyType[][] {
{ value00, value01, value02 , value03 },
{ value10, value11, value12 }
};
Nếu bạn khai báo một mảng của kiểu nguyên thủy ( byte, char, double, float, long, int, short, boolean), các phần tử không được chỉ định giá trị, chúng sẽ có giá trị mặc định
- Giá trị mặc định 0 ứng với các kiểu byte, double, float, long, int, short.
- Giá trị mặc định false ứng với kiểu boolean.
- Giá trị mặc định '\u0000' (Ký tự null) ứng với kiểu char.
Ngược lại, nếu bạn khai báo một mảng của kiểu tham chiếu, nếu một phần tử của mảng không được chỉ định giá trị, nó sẽ có giá trị mặc định là null.
Ví dụ:
package com.company;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String args[]) {
// Các phần tử có giá trị mặc định
int[][] myArray = new int[2][3];
// Số dòng của mảng 2 chiều.
System.out.println("Length of myArray: " + myArray.length); // ==> 2
// Print out
for (int row = 0; row < 2; row++) {
for (int col = 0; col < 3; col++) {
System.out.println("myArray[" + row + "," + col + "]=" + myArray[row][col]);
}
}
System.out.println(" --- ");
// Gán các giá trị cho các phần tử.
for (int row = 0; row < 2; row++) {
for (int col = 0; col < 3; col++) {
myArray[row][col] = (row + 1) * (col + 1);
}
}
// Print out
for (int row = 0; row < 2; row++) {
for (int col = 0; col < 3; col++) {
System.out.println("myArray[" + row + "," + col + "]=" + myArray[row][col]);
}
}
}
}
Length of myArray: 2
myArray[0,0]=0
myArray[0,1]=0
myArray[0,2]=0
myArray[1,0]=0
myArray[1,1]=0
myArray[1,2]=0
---
myArray[0,0]=1
myArray[0,1]=2
myArray[0,2]=3
myArray[1,0]=2
myArray[1,1]=4
myArray[1,2]=6
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java