Mảng (Array) trong Java

Mảng (Array) trong Java

[Mảng trong java, Array trong Java, mảng 2 chiều trong Java, mảng đa chiều ]Thường thì, mảng là một tập hợp các phần tử có kiểu tương đương nhau mà có địa điểm ô nhớ liền kề. 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. Nó là một kết cấu dữ liệu, tại đó tất cả chúng ta có thể lưu trữ các phần tử tương đương nhau. Tất cả chúng ta chỉ có thể lưu trữ một tập hợp cố cố định các phần tử trong một mảng trong Java.

Mảng trong Java là dựa theo chỉ mục (index), phần tử trước tiên của mảng được lưu trữ tại chỉ mục 0.

Chương chỉ dẫn này giới thiệu cách khai báo các biến mảng, tạo các mảng, giải quyết các mảng bởi sử dụng chỉ mục của các biến, mảng 1 chiều & mảng đa chiều trong Java.

Để hiểu sâu hơn các định nghĩa được trình bày trong chương này, mời bạn đọc qua loạt bài: Chẳng hạn về Array trong Java.

Lợi thế của mảng trong Java

  • Tối ưu hóa code: từ đó tất cả chúng ta có thể thu nạp & sắp đặt dữ liệu một cách đơn giản.

  • Truy cập bất chợt: tất cả chúng ta có thể lấy bất kì dữ liệu nào ở tại bất kì địa điểm chỉ mục nào.

Giới hạn của mảng trong Java

  • Hạn chế kích thước: Tất cả chúng ta chỉ có thể lưu trữ kích thước cố định số phần tử trong mảng. Nó không tăng kích thước của nó tại runtime. Để giải quyết vấn đề này, Collection Framework được sử dụng trong Java.

Các kiểu mảng trong Java

Có hai kiểu mảng trong Java, này là:

  • Mảng 1 chiều

  • Mảng đa chiều

Marketing

Khai báo biến mảng trong Java

Để sử dụng một mảng trong một chương trình, bạn phải khai báo một biến để tham chiếu mảng, & bạn phải xác nhận 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.

Chú giải: Kieu_du_lieu[] Bien_tham_chieu_mang được ưa chuộng hơn. Còn Kieu_du_lieu Bien_tham_chieu_mang[] bắt nguồn từ ngôn từ ₵/₵++ & được đồng ý trong Java.

Chẳng hạn:

Đoạn code sau là chẳng hạn 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.

Tạo mảng trong Java

Bạn có thể tạo một mảng bởi sử dụng toán tử new 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 công việc sau:

  • Nó tạo một mảng bởi sử dụng new Kieu_du_lieu[Kich_co_mang];

  • Nó gán tham chiếu của mảng mới được tạo tới biến Bien_tham_chieu_mang

Xem Thêm  Thực thi truy vấn bằng Trình kết nối / Python - truy vấn thực thi python mysql

Khai báo một biến mảng, tạo một mảng, & gán tham chiếu của mảng tới biến có thể được tổ hợp trong 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 mảng bởi sử dụng cách sau:

Kieu_du_lieu[] Bien_tham_chieu_mang = {giatri0, giatri1, ..., giatriN};

Các phần tử mảng được truy cập thông qua index – chỉ mục. Chỉ mục của mảng được tính toán từ 0 tới Bien_tham_chieu_mang.length-1.

Marketing

Chẳng hạn:

Lệnh sau khai báo một biến mảng, BK49, tạo một mảng gồm 10 phần tử với kiểu double & gán tham chiếu tới BK49.

double[] BK49 = new double[10];

Mảng 1 chiều trong Java

Bạn theo dõi chẳng hạn dễ dàng sau về mảng 1 chiều. Bước này, tất cả chúng ta khai báo, khởi tạo, khởi tạo & vọc mảng.

Khi giải quyết (sơ chế) các phần tử mảng, tất cả chúng ta thường sử dụng hoặc vòng lặp for hoặc vòng lặp foreach bởi vì toàn bộ phần tử trong một mảng là cùng kiểu & kích thước mảng đã biết.

class Array1{  
public static void main(String args[]){  
  
int α[]=new int[5];//phan khai bao va khoi tao  
α[0]=10;//Phan khoi tao  
α[1]=20;  
α[2]=70;  
α[3]=40;  
α[4]=50;  
  
//in đưa  
for(int ι=0;ivàlt;α.length;ι++)//length la thuoc tinh cua đưa  
System.out.println(α[i]);  
  
}}  

Tất cả chúng ta có thể khai báo, khởi tạo & khởi tạo mảng trong Java bởi:

int α[]={33,3,4,5};//khai bao, khoi tao va khoi tao   

Bạn theo dõi chẳng hạn sau để in mảng này.

class Testarray1{  
public static void main(String args[]){  
  
int α[]={33,3,4,5};//khai bao, khoi tao va khoi tao 
  
//in đưa
for(int ι=0;ivàlt;α.length;ι++)//length la thuoc tinh cua đưa 
System.out.println(α[i]);  
  
}}  

Truyền mảng tới mẹo trong Java

Bạn có thể truyền mảng tới mẹo để mà bạn có thể tái sử dụng cùng tính logic của mẹo đó trên bất kì mảng nào. Dưới đây là chẳng hạn dễ dàng để lấy số nhỏ nhất của một mảng bởi sử dụng mẹo.

class Testarray2{  
static void min(int arr[]){  
int min=arr[0];  
for(int ι=1;ivàlt;arr.length;ι++)  
 if(minvàgt;arr[i])  
  min=arr[i];  
  
System.out.println(min);  
}  
  
public static void main(String args[]){  
  
int α[]={33,3,4,5};  
min(α);//Truyen đưa toi phuong thuc 
  
}}  

Vòng lặp foreach trong Java

JDK 1.5 giới thiệu một vòng lặp for mới, được biết với cái tên foreach hoặc enhanced for, mà cho bạn khả năng “vọc” mảng một cách liên tục mà không cần sử dụng một biến chỉ mục.

Chẳng hạn:

Code sau hiển thị toàn bộ phần tử 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 đưa
      for (double element: BK49) {
         System.out.println(element);
      }
   }
}

Trả về một mảng từ một mẹo trong Java

Một mẹo cũng có thể trả về một mảng. Chẳng hạn, mẹo dưới đây in các phần tử trong mảng theo thứ tự trái lại.

package edu.doannhg.basic;

public class ArrayDemo {
	public static void hamDaoNguoc(int[] danh mục) {
		  int[] result = new int[list.length];
		  // vong lap de dao nguoc đưa
		  for (int ι = 0, j = result.length - 1; ι < danh mục.length; ι++, j--) {
		    result[j] = danh mục[i];
		    
		  }
		  // vong lap foreach de hien thi cac phan tu trong đưa dao nguoc
		  for (int α: result) {
		         System.out.print(α+ " ");
		      }
		}
	public static void main(String [] args){
		int [] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1};
		hamDaoNguoc(arr);
		
	}
}

Mảng hai chiều & đa chiều trong Java

Trong trường hợp này, dữ liệu được lưu trữ trong hàng & cột dựa theo chỉ mục. Cú pháp để khai báo mảng đa chiều trong Java:

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ể khởi tạo mảng đa chiều trong Java, giống như sau:

int[][] arr=new int[3][3];//3 hang va 3 cot  

Chẳng hạn về khởi 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;  

Chẳng hạn dễ dàng sau sẽ khai báo, khởi tạo, khởi tạo & in một mảng hai chiều.

class Testarray3{  
public static void main(String args[]){  
  
//khai bao va khoi tao đưa 2 chieu 
int arr[][]={{1,2,3},{2,4,5},{4,4,5}};  
  
//in đưa hai chieu  
for(int ι=0;ivàlt;3;ι++){  
 for(int j=0;jvàlt;3;j++){  
   System.out.print(arr[i][j]+" ");  
 }  
 System.out.println();  
}  
  
}}  

Tên lớp của mảng trong Java là gì?

Trong Java, mảng là một đối tượng. Với đối tượng Array, một lớp ủy nhiệm được tạo có tên có thể nhận được bởi mẹo getClass(), getName() trên đối tượng đó.

class Testarray4{  
public static void main(String args[]){  
  
int arr[]={4,4,5};  
  
Class ͼ=arr.getClass();  
String name=ͼ.getName();  
  
System.out.println(name);  
  
}}   

Copy một mảng trong Java

Bạn có thể copy một mảng này sang mảng khác bởi mẹo arraycopy của lớp System. Cú pháp của mẹo arraycopy như sau:

public static void arraycopy(  
Object src, int srcPos,Object dest, int destPos, int length  
)   

Bạn theo dõi chẳng hạn của mẹo arraycopy trong Java để am hiểu hơn về cú pháp trên:

class TestArrayCopyDemo {  
    public static void main(String[] args) {  
        char[] copyFrom = { '{d}', 'e', 'ͼ', 'α', 'ƒ', 'ƒ', 'e',  
                'ι', 'и', 'α', 't', 'e', '{d}' };  
        char[] copyTo = new char[7];  
  
        System.arraycopy(copyFrom, 2, copyTo, 0, 7);  
        System.out.println(new String(copyTo));  
    }  
}   

Cộng hai ma trận trong Java

Chẳng hạn dễ dàng sau sẽ thực hiện phép cộng hai ma trận trong Java:

class Testarray5{  
public static void main(String args[]){  
//tao hai ma tran  
int α[][]={{1,3,4},{3,4,5}};  
int ɓ[][]={{1,3,4},{3,4,5}};  
  
//tao ma tran khac de luu giu ket qua phep cong hai ma tran 
int ͼ[][]=new int[2][3];  
  
//cong va in tong hai ma tran 
for(int ι=0;ivàlt;2;ι++){  
for(int j=0;jvàlt;3;j++){  
ͼ[i][j]=α[i][j]+ɓ[i][j];  
System.out.print(ͼ[i][j]+" ");  
}  
System.out.println();//new line  
}  
  
}}   

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

Lớp chứa nhiều mẹo static phong phú để xếp thứ tự & tìm kiếm các mảng, so sánh các mảng & điền các phần tử vào mảng.

Xem Thêm  Thực thi truy vấn bằng Trình kết nối / Python - truy vấn thực thi python mysql

STT
Bí quyết & Diễn tả

1
public static int binarySearch(Object[] α, Object key)

Tìm kiếm mảng của Object (byte, int, double, …) đã cho với giá trị đã xác nhận 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 mẹo này. Nó trả về chỉ mục của keyword tìm kiếm, nếu nó nằm trong danh mục, còn nếu không thì, bằng (-(điểm chèn + 1)).

2
public static boolean equals(long[] α, long[] a2)

Trả về true nếu hai mảng long đã nghĩ rằng thăng bằng nhau. Hai mảng này được nghĩ rằng thăng bằng nếu cả hai mảng chứa cùng số lượng phần tử, & toàn bộ các cặp phần tử tương ứng của hai mảng là thăng bằng. Bí quyết tương đương có thể được sử dụng bởi toàn bộ kiểu dữ liệu gốc khác (byte, short, int, …).

3
public static void fill(int[] α, int val)

Gán giá trị int đã cho tới mỗi phần tử của mảng int đã cho. Bí quyết tương đương có thể được sử dụng bởi toàn bộ kiểu dữ liệu gốc khác (byte, short, int, …).

4
public static void sort(Object[] α)

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ử. Bí quyết tương đương có thể được sử dụng bởi toàn bộ kiểu dữ liệu gốc khác (byte, short, int, …).

Đã có app VietJack trên smartphone, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng….Free. Tải ngay áp dụng trên Android & iOS.

Xem Thêm  Kế thừa trong C # - làm thế nào để sử dụng kế thừa


Theo dõi chúng tôi Free trên mxh facebook & youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt mặt các dự án trên trường & đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo cơ hội cho sinh viên cho thể mua khóa học.

Bài viết khóa học gồm 16 chuơng & 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/
Bạn nào có nhu cầu mua, sms trực tiếp α Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Loạt bài chỉ dẫn của chúng tôi dựa một phần trên nguồn ebook của: Tutorialspoint.com

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài tiên tiến nhất về Java,₵,₵++,Javascript,HTML,Python,Database,Mobile…. tiên tiến nhất của chúng tôi.

Viết một bình luận