VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Java Cơ Bản

Java là gì? Lịch sử Java Các tính năng của Java Cài đặt môi trường Java (cho người mới bắt đầu) Thiết lập PATH cho java Chương trình Hello World JDK, JRE và JVM Biến trong java Các kiểu dữ liệu trong java Ép kiểu (Type casting) Các toán tử trong Java Hệ thống Unicode trong java

Câu Lệnh Điều Khiển

Mệnh đề If-else Mệnh đề Switch-case Vòng lặp For Vòng lặp While Vòng lặp Do-While Break trong java Continue trong java Chương trình java kinh điển

Các Tính Chất Của Java OOPs

Tính đóng gói trong java Tính kế thừa trong java Tính đa hình trong java Nạp chồng phương thức Ghi đè phương thức Overloading vs Overriding

Các Khái Niệm Java OOPs

Tổng quan java OOPs Lớp và đối tượng Package trong java Constructor trong java Từ khóa this trong java Từ khóa super trong java Từ khóa final trong java Từ khóa static trong java Access Modifier trong java Abstract class trong java Interface trong java Abstract vs Interface trong java Lớp Object trong java Object Cloning trong java equals() và hashCode() Array (mảng) trong java Khai báo mảng trong java Duyệt mảng trong java Lớp Wrapper trong java Đệ quy trong java Truyền giá trị và tham chiếu trong java Toán tử instanceof trong java Sử dụng regex trong java

Mô Hình MVC

Mô hình MVC là gì? - Ví dụ login sử dụng mô hình MVC trong Java

Java Programs

Tính giai thừa trong java Check số nguyên tố trong java Dãy số Fibonacci trong java Chuyển đổi hệ cơ số trong java Liệt kê n số nguyên tố đầu tiên trong Java
Java String Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Java Math Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Mảng (Array) trong java


Interface trong java
Lớp Wrapper trong java

Nội dung chính

  • Mảng trong Java
  • Các kiểu của mảng trong java
  • Tạo một mảng trong Java
  • Truy cập các phần tử của một mảng trong Java
  • Thay đổi một phần tử mảng trong Java
  • Độ dài mảng trong Java
  • Duyệt các phần tử của mảng trong Java
    • Sử dụng vòng lặp for
    • Sử dụng foreach
    • So sánh for với foreach
  • Sắp xếp mảng
  • Các cách khác để tạo một mảng trong Java
  • Truyền mảng vào phương thức trong java
  • Sao chép một mảng trong java
  • Mảng hai chiều và đa chiều trong Java
    • 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
    • Ví dụ khai báo và khởi tạo mảng đa chiều trong java
    • Ví dụ cộng 2 ma trận (mảng đa chiều) trong Java
  • Lợi thế và hạn chế của mảng trong java
    • Lợi thế
    • Hạn chế
  • Giới thiệu Lớp 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.

Mảng trong 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 []:


dataType[] arr;
dataType []arr; 
dataType arr[];  

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:


String[] cars = { "Honda", "BMW", "Ford", "Mazda" };

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


int[] myNum = { 10, 20, 30, 40 };


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ụ:


package vn.viettuts.array;

public class TruyCapArray1 {
    public static void main(String[] args) {
        String[] cars = { "Honda", "BMW", "Ford", "Mazda" };
        System.out.println(cars[0]);
    }
}

Kết quả:

Honda
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ụ:


package vn.viettuts.array;

public class TruyCapArray2 {
    public static void main(String[] args) {
        String[] cars = { "Honda", "BMW", "Ford", "Mazda" };
        // thay đổi phần tử đầu tiên của mảng cars
        cars[0] = "Morning";
        // hiển thị phần tử đầu tiên của mảng cars
        System.out.println("Phần tử đầu tiên: " + cars[0]);
    }
}

Kết quả:

Phần tử đầu tiên: Morning


Độ 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ụ:


package vn.viettuts.array;

public class DodaiArray1 {
    public static void main(String[] args) {
        String[] cars = { "Honda", "BMW", "Ford", "Mazda" };
        System.out.println("Độ dài của mảng cars là: " + cars.length);
    }
}

Kết quả:

4

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

Có 2 các để 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ụ:


package vn.viettuts.array;

public class DuyetArray1 {
    public static void main(String[] args) {
        String[] cars = { "Honda", "BMW", "Ford", "Mazda" };
        for (int i = 0; i < cars.length; i++) {
            System.out.println(cars[i]);
        }
    }
}

Kết quả:

Honda
BMW
Ford
Mazda

Sử dụng foreach


package vn.viettuts.array;

public class DuyetArray2 {
    public static void main(String[] args) {
        String[] cars = { "Honda", "BMW", "Ford", "Mazda" };
        for (String car : cars) {
            System.out.println(car);
        }
    }
}

Kết quả:

Honda
BMW
Ford
Mazda

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ụ:


package vn.viettuts.array;

import java.util.Arrays;

public class DuyetArray2 {
    public static void main(String[] args) {
        String[] cars = { "Honda", "BMW", "Ford", "Mazda" };
        // sap xep mangr cars theo thu tu tang dan
        Arrays.sort(cars);
        System.out.println("Mảng cars sau khi được sắp xếp:");
        for (String car : cars) {
            System.out.println(car);
        }
    }
}

Kết quả:

Mảng cars sau khi được sắp xếp:
BMW
Ford
Honda
Mazda

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:


// tạo một mảng có độ dài 4, thêm các phần tử sau tạo
String[] cars1 = new String[4];

// tạo một mảng không cần chỉ định số phần tử cụ thể
String[] cars2 = new String[] { "Honda", "BMW", "Ford", "Mazda" };

// tạo một mảng không cần chỉ định số phần tử cụ thể
// và không cần dùng từ khóa new
String[] cars3 = { "Honda", "BMW", "Ford", "Mazda" };

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:


// khai báo một mảng
String[] cars;

// thêm giá trị, sử dụng từ khóa new
cars = new String[] { "Honda", "BMW", "Ford" };

// nếu không dùng new sẽ bị lỗi
cars = {"Honda","BMW","Ford"};


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ụ:


public 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);// truyền mảng tới phương thức
    }
}

Kết quả:

3

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:


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

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


public 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));
    }
}

Kết quả:

caffein


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


dataType[][] arr;
dataType [][]arr;
dataType arr[][];
dataType []arr[];   

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


int[][] arr=new int[3][3]; // 3 hàng 3 cột
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ụ khai báo và khởi tạo mảng đa chiều trong java


public class TestArray3 {
    public static void main(String args[]) {

        // khai báo và khởi tạo mảng 2 chiều
        int arr[][] = { { 1, 2, 3 }, { 2, 4, 5 }, { 4, 4, 5 } };

        // in mảng 2 chiều r màn hình
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

    }
}

Kết quả:

1 2 3 
2 4 5 
4 4 5 

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


package vn.viettuts.array;

public class CongMaTran {
    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();
        }
    }
}

Kết quả:

2 6 8 
6 8 10 

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.

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, …).


Interface trong java
Lớp Wrapper trong java

Bài viết liên quan:

  • Sự khác nhau giữa Array với ArrayList
  • ArrayList trong java
  • Sắp xếp các phần tử của List
  • Sự khác nhau giữa ArrayList và Vector
  • TreeSet trong java
  • HashSet trong java
  • HashMap trong java
  • Sự khác nhau giữa HashMap và Hashtable
  • List câu hỏi phỏng vấn Java Collection

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Java Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaBài tập quản lý sinh viên trong JavaHashSet trong java

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml