Admin
15/09/2023
Share
Trong Java, mảng là một tập hợp các phần tử có cùng kiểu dữ liệu và được lưu trữ liên tiếp trong bộ nhớ. Đây là một cấu trúc dữ liệu cho phép lưu trữ và quản lý các phần tử tương tự. Mảng trong Java chỉ cho phép lưu trữ một số phần tử cố định.
Mảng trong Java là dựa trên chỉ mục (index), phần tử đầu tiên của mảng được lưu trữ tại chỉ mục 0.
Trong chương này, chúng ta sẽ tìm hiểu về cách khai báo và tạo mảng, cũng như xử lý các mảng trong Java bằng cách sử dụng chỉ mục. Bên cạnh đó, chúng ta cũng sẽ tìm hiểu về mảng một chiều và mảng đa chiều.
Để có cái nhìn sâu sắc hơn về các khái niệm được trình bày trong chương này, mời bạn xem loạt bài viết: Các ví dụ về Array trong ngôn ngữ lập trình Java.
Ưu điểm của mảng trong Java
Tối ưu hóa mã nguồn: từ đó chúng ta có thể thu thập và sắp xếp thông tin một cách dễ dàng.
Chúng ta có thể lấy bất kỳ dữ liệu nào từ bất kỳ vị trí chỉ mục nào bằng cách truy cập ngẫu nhiên.
Nhược điểm của mảng trong Java
Trong Java, để giải quyết vấn đề giới hạn kích cỡ của mảng, chúng ta sử dụng Collection Framework. Điều này cho phép chúng ta lưu trữ một số phần tử có kích cỡ cố định trong mảng mà không cần tăng kích cỡ tại thời điểm chạy.
Các loại mảng trong Java
Có hai loại mảng trong Java, đó là:
Mảng một chiều.
Mảng nhiều chiều.
Quảng cáo.
Khai báo mảng biến trong Java
Để sử dụng một mảng trong chương trình, ta cần khai báo một biến để tham chiếu mảng và xác định kiểu mảng mà biến có thể tham chiếu. Dưới đây là cú pháp để khai báo một biến mảng:
Kieu_du_lieu[] Bien_tham_chieu_mang; // cach uu tien. hoac Kieu_du_lieu Bien_tham_chieu_mang[]; // lam viec nhung khong la cach uu tien.
Ghi chú: Đối với biến mảng, ưu tiên sử dụng cú pháp Kieu_du_lieu[] Bien_tham_chieu_mang. Còn cú pháp Kieu_du_lieu Bien_tham_chieu_mang[] xuất phát từ ngôn ngữ C/C++ và được chấp nhận trong Java.
Chẳng hạn:
Đoạn mã sau đây là một ví dụ minh họa cho cú pháp này.
double[] BK49; // cach uu tien. hoac double BK49[]; // lam viec nhung khong la cach uu tien.
Khởi tạo mảng trong Java
Bạn có thể tạo một danh sách bằng cách sử dụng toán tử mới với cú pháp sau:.
Bien_tham_chieu_mang = new Kieu_du_lieu[Kich_co_mang];
Lệnh trên thực hiện hai nhiệm vụ sau:
Nó tạo ra một mảng bằng cách sử dụng từ khóa new và khai báo kiểu dữ liệu và kích thước của mảng.
Nó gán tham chiếu của mảng tạo mới tới biến Bien_tham_chieu_mang.
Một cách để tổ hợp khai báo biến mảng, tạo một mảng và gán tham chiếu của mảng tới biến là sử dụng một lệnh như sau:.
Kieu_du_lieu[] Bien_tham_chieu_mang = new Kieu_du_lieu[Kich_co_mang];
Bạn cũng có thể tạo các nhóm bằng cách sử dụng phương pháp sau:
Kieu_du_lieu[] Bien_tham_chieu_mang = {giatri0, giatri1, ..., giatriN};
Mảng có thể truy cập các phần tử thông qua chỉ mục. Chỉ mục của mảng được tính từ 0 đến (độ dài mảng – 1).
Quảng cáo.
Chẳng hạn:
Sau khi khai báo biến mảng BK49, ta tạo một mảng mới có 10 phần tử kiểu double và gán tham chiếu tới BK49.
double[] BK49 = new double[10];
Mảng một chiều. trong Java
Dưới đây là một ví dụ đơn giản về mảng một chiều. Trong ví dụ này, chúng ta sẽ thực hiện các bước như khai báo, khởi tạo và thao tác trên mảng.
Khi thực hiện việc xử lý các phần tử của một mảng, chúng ta thường sử dụng entweder eine for-Schleife oder eine foreach-Schleife, vì tất cả các phần tử trong mảng đều có cùng kiểu và kích thước mảng đã được biết trước.
class Array1{ public static void main(String args[]){ int a[]=new int[5];//phan khai bao va khoi tao a[0]=10;//Phan khoi tao a[1]=20; a[2]=70; a[3]=40; a[4]=50; //in mang for(int i=0;i<a.length;i++)//length la thuoc tinh cua mang System.out.println(a[i]); }}
Chúng ta có thể định nghĩa, tạo và khởi tạo mảng trong ngôn ngữ Java bằng cách:
int a[]={33,3,4,5};//khai bao, khoi tao va khoi tao
Bạn theo dõi ví dụ dưới đây để in ra mảng này.
class Testarray1{ public static void main(String args[]){ int a[]={33,3,4,5};//khai bao, khoi tao va khoi tao //in mang for(int i=0;i<a.length;i++)//length la thuoc tinh cua mang System.out.println(a[i]); }}
Truyền một mảng vào phương thức trong Java
Bạn có thể truyền một mảng vào phương thức để tái sử dụng tính logic của phương thức đó cho bất kỳ mảng nào. Dưới đây là một ví dụ đơn giản để lấy số nhỏ nhất trong một mảng bằng cách sử dụng phương thức.
class Testarray2{ static void min(int arr[]){ int min=arr[0]; for(int i=1;i<arr.length;i++) if(min>arr[i]) min=arr[i]; System.out.println(min); } public static void main(String args[]){ int a[]={33,3,4,5}; min(a);//Truyen mang toi phuong thuc }}
Vòng lặp foreach trong Java
JDK 1.5 đưa ra một loại vòng lặp for mới, được gọi là foreach hoặc enhanced for, giúp bạn có thể duyệt qua các phần tử trong mảng một cách thuận tiện mà không cần sử dụng biến chỉ mục.
Chẳng hạn:
Code sau hiển thị tất cả thành phần trong mảng BK49:.
public class TestArray3 { public static void main(String[] args) { double[] BK49 = {1.9, 2.9, 3.4, 3.5}; // In tat ca cac phan tu mang for (double element: BK49) { System.out.println(element); } } }
Trả về một array từ một method trong Java
Một phương thức cũng có thể trả về một mảng. Ví dụ, dưới đây là một phương thức in các phần tử trong mảng theo thứ tự ngược lại.
package edu.doannhg.basic; public class ArrayDemo { public static void hamDaoNguoc(int[] list) { int[] result = new int[list.length]; // vong lap de dao nguoc mang for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } // vong lap foreach de hien thi cac phan tu trong mang dao nguoc for (int a: result) { System.out.print(a+ " "); } } public static void main(String [] args){ int [] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1}; hamDaoNguoc(arr); } }
Mảng hai chiều và nhiều chiều trong Java
Trong trường hợp này, dữ liệu được lưu trữ theo hàng và cột dựa trên chỉ mục. Để khai báo một mảng đa chiều trong Java, ta sử dụng cú pháp sau:
Kieu_du_lieu[][] Bien_tham_chieu_mang; (hoac) Kieu_du_lieu [][]Bien_tham_chieu_mang; (hoac) Kieu_du_lieu Bien_tham_chieu_mang[][]; (hoac) Kieu_du_lieu []Bien_tham_chieu_mang[];
Bạn có thể tạo một mảng nhiều chiều trong Java, tương tự như sau:.
int[][] arr=new int[3][3];//3 hang va 3 cot
Ví dụ về tạo mảng đa chiều trong Java.
arr[0][0]=1; arr[0][1]=2; arr[0][2]=3; arr[1][0]=4; arr[1][1]=5; arr[1][2]=6; arr[2][0]=7; arr[2][1]=8; arr[2][2]=9;
Ví dụ đơn giản sau sẽ khai báo, tạo ra, khởi tạo và in ra một mảng hai chiều.
class Testarray3{ public static void main(String args[]){ //khai bao va khoi tao mang 2 chieu int arr[][]={{1,2,3},{2,4,5},{4,4,5}}; //in mang hai chieu for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ System.out.print(arr[i][j]+" "); } System.out.println(); } }}
Tên lớp của mảng trong Java được gọi là “Array”.
Trong ngôn ngữ lập trình Java, mảng được coi là một đối tượng. Để lấy thông tin về lớp mà một đối tượng mảng thuộc về, chúng ta có thể sử dụng phương thức getClass() và getName().
class Testarray4{ public static void main(String args[]){ int arr[]={4,4,5}; Class c=arr.getClass(); String name=c.getName(); System.out.println(name); }}
Sao chép một array trong Java
Bạn có thể sao chép một mảng từ một mảng khác bằng cách sử dụng phương thức arraycopy của lớp System. Cú pháp của phương thức arraycopy như sau:
public static void arraycopy( Object src, int srcPos,Object dest, int destPos, int length )
Bạn theo dõi ví dụ của phương thức arraycopy trong Java để hiểu sâu hơn về cú pháp trên.
class TestArrayCopyDemo { public static void main(String[] args) { char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' }; char[] copyTo = new char[7]; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); } }
Tính tổng hai ma trận trong Java
Ví dụ đơn giản sau sẽ thực hiện phép cộng hai ma trận trong ngôn ngữ lập trình Java.
class Testarray5{ public static void main(String args[]){ //tao hai ma tran int a[][]={{1,3,4},{3,4,5}}; int b[][]={{1,3,4},{3,4,5}}; //tao ma tran khac de luu giu ket qua phep cong hai ma tran int c[][]=new int[2][3]; //cong va in tong hai ma tran for(int i=0;i<2;i++){ for(int j=0;j<3;j++){ c[i][j]=a[i][j]+b[i][j]; System.out.print(c[i][j]+" "); } System.out.println();//new line } }}
Tổng quan về Lớp Array trong Java
Java.Util.Arrays là một lớp có chứa nhiều phương thức static đa dạng để thực hiện việc 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.
STT | Phương thức và Miêu tả |
---|---|
1 | public 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)). |
2 | public 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, …). |
3 | public 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, …). |
4 | public 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, …). |
Bạn có thể tải ngay ứng dụng VietJack trên điện thoại của mình để sử dụng miễn phí các tính năng như giải bài tập SGK, SBT, soạn văn, văn mẫu, thi online và xem bài giảng. Ứng dụng này có sẵn trên cả hệ điều hành Android và iOS.
Theo theo dõi chúng tôi miễn phí trên các mạng xã hội Facebook và YouTube.
Bạn có thể tận hưởng khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG hết sức thú vị. Đây là một cơ hội tuyệt vời để vượt qua các dự án trên trường và thực tập Java. Với mức giá chỉ 300K, khóa học này thực sự đáng để bạn đầu tư. Đặc biệt, chúng tôi đã tạo điều kiện ưu đãi cho sinh viên để mua khóa học này.
Khóa học này bao gồm 16 chương và 100 video học cực kỳ thú vị. Bạn có thể học trực tiếp tại trang web https://www.Udemy.Com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/. Nếu bạn muốn mua khóa học, hãy liên hệ trực tiếp với a Tuyền, một cựu sinh viên của trường Bách Khoa K53. Bạn có thể inbox a Tuyền qua trang cá nhân https://www.Facebook.Com/tuyen.Vietjack.
Các bài hướng dẫn của chúng tôi dựa phần nào vào nguồn tài liệu từ: Tutorialspoint.Com.
Theo dõi trang cá nhân của Nguyễn Thanh Tuyền trên Facebook tại https://www.Facebook.Com/tuyen.Vietjack để cập nhật những bài viết mới nhất về Java, C, C++, Javascript, HTML, Python, Database, Mobile… Từ chúng tôi.