FaCode Ngôn ngữ Java Mảng (Array) trong java

FaCode Ngôn ngữ Java

FaCode Ngôn ngữ Java Mảng (Array) trong java


Mảng trong Java

Thông thường, mảng (array) là một tập hợp các phần tử có cùng kiểu được lưu trữ gần nhau trong bộ nhớ.

Mảng trong java là một đối tượng chứa các phần tử có kiểu dữ liệu giống nhau. Mảng là một cấu trúc dữ liệu nơi lưu trữ các phần tử giống nhau. Với mảng trong java chúng ta chỉ có thể lưu trữ một tập các phần tử có số lượng phần tử cố định.

Mảng trong java lưu các phần tử theo chỉ số, chỉ số của phần tử đầu tiên là 0.

FaCode Ngôn ngữ Java

Các kiểu của mảng trong java

Có hai kiểu mảng trong java

  • Mảng một chiều
  • Mảng đa chiều

Tạo một mảng trong Java

Để khai báo một mảng, khai báo loại biến với dấu ngoặc vuông []:

FaCode Ngôn ngữ Java

Ví dụ chúng ta đã khai báo một biến chứa một chuỗi các chuỗi.

Để chèn giá trị vào nó, chúng ta có thể sử dụng một mảng bằng chữ – đặt các giá trị trong danh sách được phân tách bằng dấu phẩy, bên trong dấu ngoặc nhọn:

Để tạo một mảng các số nguyên, bạn có thể viết:

FaCode Ngôn ngữ Java

Truy cập các phần tử của một mảng trong Java

Bạn truy cập một phần tử mảng bằng cách sử dụng số chỉ mục (index).

Ví dụ:

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Lưu ý: Chỉ mục của mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.


Thay đổi một phần tử mảng trong Java

Để thay đổi giá trị của một phần tử cụ thể, hãy sử dụng số chỉ mục:

Ví dụ:

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Độ dài mảng trong Java

Để biết có bao nhiêu phần tử một mảng, sử dụng thuộc tính length :

Ví dụ:

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Duyệt các phần tử của mảng trong Java

Có 2 cách để duyệt các phần tử của mảng:

  • Sử dụng vòng lặp for
  • Sử dụng foreach

Sử dụng vòng lặp for

Bạn có thể lặp qua các phần tử mảng bằng vòng lặp for và sử dụng thuộc tính length để chỉ định số lần vòng lặp sẽ chạy.

Ví dụ:

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Sử dụng foreach

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

So sánh for với foreach

Nếu bạn so sánh vòng lặp for và vòng lặp foreach, bạn sẽ thấy rằng phương thức foreach dễ viết hơn, nó không yêu cầu bộ đếm (sử dụng thuộc tính length) và nó dễ đọc hơn.


Sắp xếp mảng

Có nhiều phương thức mảng có sẵn, ví dụ Sort(), sắp xếp một mảng theo thứ tự bảng chữ cái hoặc theo thứ tự tăng dần.

Ví dụ:

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Các cách khác để tạo một mảng trong Java

Trong Java, có nhiều cách khác nhau để tạo một mảng:

FaCode Ngôn ngữ Java

Bạn có thể chọn bất kỳ cách khởi tạo nào. Trong hướng dẫn của chúng tôi, chúng tôi sẽ thường sử dụng tùy chọn cuối cùng, vì nó nhanh hơn và dễ đọc hơn.

Một trường hợp khác, nếu bạn khai báo một mảng và khởi tạo nó sau, bạn phải sử dụng từ khóa new:

FaCode Ngôn ngữ Java

Truyền mảng vào phương thức trong java

Chúng ta có thể truyền mảng vào phương thức, điều này giúp tái sử dụng code logic để xử lý mảng bất kỳ.

Ví dụ:

FaCode Ngôn ngữ Java

Kết quả:

FaCode Ngôn ngữ Java

Sao chép một mảng trong java

Chúng ta có thể sao chép một mảng tới mảng khác bởi phương thức arraycopy của lớp System. Cú pháp của phương thức arraycopy:

FaCode Ngôn ngữ Java

Ví dụ về sao chép mảng trong java

FaCode Ngôn ngữ Java

Kết quả:

Mảng hai chiều và đa chiều trong Java

Trong TH này, dữ liệu được lưu trữ theo hàng và cột theo chỉ mục (hay còn gọi là dạng ma trận).

Khai báo mảng đa chiều trong java


Ví dụ về khởi tạo và gán giá trị cho mảng đa chiều trong java

FaCode Ngôn ngữ Java

Ví dụ khai báo và khởi tạo mảng đa chiều trong java

FaCode Ngôn ngữ Java

Kết quả:


Ví dụ cộng 2 ma trận (mảng đa chiều) trong Java

FaCode Ngôn ngữ Java

Kết quả:


Lợi thế và hạn chế của mảng trong java

Lợi thế

  • Tối ưu code: Mảng giúp lấy hoặc sắp xếp dữ liệu dễ dàng.
  • Truy cập ngẫu nhiên: Chúng ta có thể lấy dữ liệu được lưu trữ ở bất kỳ vị trí nào thông qua chỉ số.

Hạn chế

  • Giới hạn kích thước: Chúng ta phải khởi tạo kích thước của mảng trong java trước khi sử dụng. Không thể thay đổi được kích thước của nó lúc runtime. Collection framework được sử dụng trong java để giải quyết vấn đề này.

Giới thiệu Lớp Array trong Java

Lớp java.util.Arrays chứa nhiều phương thức static đa dạng để xếp thứ tự và tìm kiếm các mảng, so sánh các mảng và điền các phần tử vào mảng.

STTPhương thức và Miêu tả
1public static int binarySearch(Object[] a, Object key)Tìm kiếm mảng của Object (byte, int, double, …) đã cho với giá trị đã xác định bởi sử dụng thuật toán tìm kiếm nhị phân. Mảng này phải được xếp thứ tự trước khi gọi phương thức này. Nó trả về chỉ mục của từ khóa tìm kiếm, nếu nó nằm trong danh sách, nếu không thì, bằng (-(điểm chèn + 1)).
2public static boolean equals(long[] a, long[] a2)Trả về true nếu hai mảng long đã cho là cân bằng nhau. Hai mảng này được cho là cân bằng nếu cả hai mảng chứa cùng số lượng phần tử, và tất cả các cặp phần tử tương ứng của hai mảng là cân bằng. Phương thức tương tự có thể được sử dụng bởi tất cả kiểu dữ liệu gốc khác (byte, short, int, …).
3public static void fill(int[] a, int val)Gán giá trị int đã cho tới mỗi phần tử của mảng int đã cho. Phương thức tương tự có thể được sử dụng bởi tất cả kiểu dữ liệu gốc khác (byte, short, int, …).
4public static void sort(Object[] a)Xếp thứ tự mảng các đối tượng đã cho theo thứ tự tăng dần, theo thứ tự tự nhiên của các phần tử. Phương thức tương tự có thể được sử dụng bởi tất cả kiểu dữ liệu gốc khác (byte, short, int, …).
FaCode Ngôn ngữ Java

_____________________

Khóa học lập trình

7 Java frameworks phổ biến nhất hiện nay

xem thêm

________

FaCode là một seri học tập lập trình, lần này là FaCode ngôn ngữ Java, bằng mọi nỗ lực FaCode sẽ hoàn thành các mục tiêu đề ra trong FaCode Ngôn ngữ Java. Hãy đồng hành cùng FaCode Ngôn ngữ Java và theo dõi chúng tôi nhé. FaCode Ngôn ngữ Java rất mong nhận được lời góp ý từ phía cộng đồng. Share4Happy với phương châm chia sẻ để hạnh phúc.

Related posts

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn về Hibernate trong Java

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn về JSP trong Java

FaCode Ngôn ngữ Java những câu hỏi phỏng vấn servlet.