Cổng Khoa học Máy tính dành cho những người yêu thích máy tính. Nó bao gồm các bài báo về khoa học máy tính và lập trình được viết tốt, tư duy tốt và được giải thích tốt, các câu đố và thực hành / lập trình cạnh tranh / các câu hỏi phỏng vấn công ty.
Bạn đang xem : cách tạo mảng trong java
Một mảng trong Java là một nhóm giống như -typed biến được gọi bằng một tên chung. Mảng trong Java hoạt động khác với trong C / C ++. Sau đây là một số điểm quan trọng về mảng Java.
- Trong Java, tất cả các mảng đều được cấp phát động. (thảo luận bên dưới)
- Vì mảng là các đối tượng trong Java, chúng ta có thể tìm độ dài của chúng bằng cách sử dụng thuộc tính đối tượng. Điều này khác với C / C ++, trong đó chúng tôi tìm độ dài bằng cách sử dụng sizeof.
- Một biến mảng Java cũng có thể được khai báo giống như các biến khác với [] sau kiểu dữ liệu.
- Các biến trong mảng được sắp xếp thứ tự và mỗi mảng có chỉ số bắt đầu từ 0.
- Mảng Java cũng có thể được sử dụng làm trường tĩnh, biến cục bộ hoặc tham số phương thức.
- kích thước của một mảng phải được chỉ định bằng giá trị int hoặc giá trị ngắn và không dài.
- Lớp cha trực tiếp của một loại mảng là Đối tượng . li >
- Mọi loại mảng đều triển khai các giao diện Có thể sao chép và java.io.Serializable .
Một mảng có thể chứa các nguyên thủy (int, char, v.v.) và đối tượng (hoặc không nguyên thủy ) tham chiếu của một lớp d phụ thuộc vào định nghĩa của mảng. Trong trường hợp kiểu dữ liệu nguyên thủy, các giá trị thực được lưu trữ trong các vị trí bộ nhớ liền kề. Trong trường hợp đối tượng lớp, các đối tượng thực tế được lưu trữ trong một phân đoạn đống .
Tạo, khởi tạo và truy cập Mảng
Mảng một chiều:
Dạng chung của một khai báo mảng một chiều là
type var-name []; HOẶC type [] var-name;
Một khai báo mảng có hai thành phần: kiểu và tên. khai báo kiểu phần tử của mảng. Kiểu phần tử xác định kiểu dữ liệu của mỗi phần tử bao gồm mảng. Giống như một mảng các số nguyên, chúng ta cũng có thể tạo một mảng các kiểu dữ liệu nguyên thủy khác như char, float, double, v.v. hoặc các kiểu dữ liệu do người dùng định nghĩa (các đối tượng của một lớp). Do đó, kiểu phần tử của mảng xác định kiểu dữ liệu mà mảng sẽ giữ.
Ví dụ:
// cả hai đều là khai báo hợp lệ int intArray []; hoặc int [] intArray; byte byteArray []; quần đùi ngắnArray []; boolean booleanArray []; long longArray []; float floatArray []; double doubleArray []; char charArray []; // một mảng các tham chiếu đến các đối tượng của // lớp MyClass (một lớp được tạo bởi // người sử dụng) MyClass myClassArray []; Đối tượng [] ao, // mảng đối tượng Bộ sưu tập [] ca; // mảng Bộ sưu tập // thuộc loại không xác định
Mặc dù khai báo đầu tiên thiết lập rằng intArray là một biến mảng, không có mảng thực tế nào tồn tại . Nó chỉ cho trình biên dịch biết rằng biến này (intArray) sẽ chứa một mảng kiểu số nguyên. Để liên kết intArray với một mảng thực tế gồm các số nguyên, bạn phải cấp phát một mảng bằng cách sử dụng new và gán nó cho intArray.
Khởi tạo mảng trong Java
Khi một mảng được khai báo, chỉ một tham chiếu của một mảng được tạo. Để tạo hoặc cấp bộ nhớ cho mảng, bạn tạo một mảng như sau: Dạng chung của nó áp dụng cho mảng một chiều sẽ xuất hiện như sau:
var-name = new type [size]; < / pre>Ở đây, chỉ định kiểu dữ liệu được cấp phát, xác định số phần tử trong mảng và là tên của biến mảng được liên kết với mảng. Để sử dụng để cấp phát một mảng, bạn phải chỉ định loại và số phần tử để cấp phát.
Ví dụ:
int intArray []; // khai báo mảng intArray = new int [20]; // cấp phát bộ nhớ cho mảngHOẶC
int [] intArray = new int [20]; // kết hợp cả hai câu lệnh trong mộtLưu ý:
- Các phần tử trong mảng được cấp phát bởi sẽ tự động được khởi tạo thành không < / strong> (đối với loại số), false (đối với boolean) hoặc null (đối với loại tham chiếu). Tham khảo giá trị mảng mặc định trong Java .
- Lấy một mảng là một quá trình gồm hai bước. Đầu tiên, bạn phải khai báo một biến của kiểu mảng mong muốn. Thứ hai, bạn phải cấp phát bộ nhớ để giữ mảng, sử dụng new và gán nó cho biến mảng. Do đó, trong Java , tất cả các mảng đều được cấp phát động.
Array Literal
Trong tình huống kích thước của mảng và các biến của mảng đã được biết trước, có thể sử dụng các ký tự của mảng.
int [] intArray = new int [] {1,2,3,4,5,6,7,8,9,10}; // Khai báo mảng theo nghĩa đen
- Độ dài của mảng này xác định độ dài của mảng đã tạo.
- Mới nhất không cần viết phần int [] mới phiên bản của Java.
Truy cập các phần tử mảng Java bằng cách sử dụng cho Vòng lặp
Mỗi phần tử trong mảng được truy cập thông qua chỉ mục của nó. Chỉ mục bắt đầu bằng 0 và kết thúc bằng (tổng kích thước mảng) -1. Tất cả các phần tử của mảng có thể được truy cập bằng cách sử dụng Java for Loop.
// truy cập các phần tử của mảng được chỉ định for (int i = 0; i & lt; arr.length; i ++) System.out.println ("Phần tử tại chỉ mục" + i + ":" + arr [i]);
Triển khai:
Java
p>
class
GFG
{
public
static
void code>
main (String [] args)
< mã lớp = "trơn"> { p >
< / code>
int
[] arr;
arr =
new
int
[
5
];
mã>
arr [
0
10
;
< p class = "line number19 index18 alt2">
arr [
1
] =
20
;
arr [
2 code >
] =
30
;
3
] =
40 mã>
arr [
4
] =
50
;
cho
(
int
i =
0
; tôi & lt; arr.length; i ++)
System.out.println (
"Phần tử tại chỉ mục"
+ i +
mã>
":"
+ arr [i]);
}
< p class = "line number31 index30 alt2"> }
Đầu ra
Phần tử ở chỉ mục 0: 10 Phần tử ở chỉ số 1: 20 Phần tử ở chỉ số 2: 30 Phần tử ở chỉ số 3: 40 Yếu tố ở chỉ số 4: 50
Độ phức tạp về thời gian: O (n)
Không gian phụ trợ: O (1) p>
Bạn cũng có thể truy cập các mảng java bằng cách sử dụng cho mỗi vòng lặp .
Mảng đối tượng
Mảng đối tượng được tạo giống như mảng các mục dữ liệu kiểu nguyên thủy theo cách sau.
Student [] arr = new Student [7]; // student là một lớp do người dùng định nghĩa
studentArray chứa bảy vùng nhớ, mỗi vùng có kích thước bằng lớp học sinh, trong đó địa chỉ của bảy đối tượng Student có thể được lưu trữ. Các đối tượng Student phải được khởi tạo bằng cách sử dụng hàm tạo của lớp Student và các tham chiếu của chúng phải được gán cho các phần tử mảng theo cách sau.
Student [] arr = new Student [5];
Ví dụ
Java
class
Sinh viên
< / p>
{
public
int
roll_no;
< p class = "line number7 index6 alt2">
public
String name; code >
Sinh viên (
int
roll_no, Tên chuỗi)
{ code >
this
.roll_no = roll_no;
this
. name = name;
}
}
public
class
GFG
{
< / p>
public
static < / code>
void
main (String [] args)
{
Student [] arr;
< / p>
arr =
ne w
Sinh viên [
5
];
mã>
arr [
0
] =
new
Sinh viên (
1
,
" aman "
);
arr [
1
] =
new
Sinh viên (
2 code >
,
"vaibhav"
);
arr [
2
] =
new
Sinh viên (
3
,
"shikar"
);
arr [ code >
3
] =
new
Sinh viên (
4
,
"dharmesh"
);
arr [ mã>
4
] =
new
St udent (
5
,
"mohit"
);
cho
(
int
i =
0
; tôi & lt; sức mạnh; i ++)
System.out.println ( mã>
"Phần tử tại"
+ i +
":"
+
arr [i ] .roll_no +
""
+ arr [i] .name);
}
< code class = "trơn">}
Đầu ra
Phần tử ở 0: 1 aman Phần tử ở vaibhav 1: 2 Nguyên tố ở shikar 2: 3 Phần tử ở 3: 4 dharmesh Phần tử ở 4: 5 mohit
Độ phức tạp về thời gian: O (n)
Không gian phụ trợ: O (1 )
Điều gì sẽ xảy ra nếu chúng tôi cố gắng truy cập các phần tử bên ngoài kích thước mảng?
JVM ném ArrayIndexOutOfBoundsException để cho biết rằng mảng đã được truy cập với một chỉ mục bất hợp pháp. Chỉ số âm hoặc lớn hơn hoặc bằng kích thước của một mảng.
Java
< code class = "keyword"> public class
GFG
{
public
static
void
main (String [] args) mã>
{
int
[] arr =
int
[
2 code >
];
arr [
0 code >
] =
10
;
arr [
1
] =
20
;
cho
(
int
i =
0
; i & lt; = arr.length; i ++)
System.out.println (arr [i]);
}
}
Lỗi thời gian chạy
Ngoại lệ trong luồng" main "java.lang.ArrayIndexOutOfBoundsException: 2 tại GFG.main (File.java:12)
Đầu ra
10 20
Mảng đa chiều:
Mảng nhiều chiều là mảng của mảng với mỗi phần tử của mảng giữ tham chiếu của các mảng khác. Chúng còn được gọi là Mảng răng cưa . Mảng nhiều chiều được tạo bằng cách thêm một tập hợp các dấu ngoặc vuông ([]) cho mỗi chiều.
int [] [] intArray = new int [10] [20]; // một mảng hoặc ma trận 2D int [] [] [] intArray = new int [10] [20] [10]; // mảng 3D
Ví dụ
Java
< / p>
public
class
multiDimensional
{
public
static
void
main (Chuỗi args [] )
{
mã>
arr [] [] = {{
2
,
7
,
9
}, {
3
,
6
,
1
}, {
7
,
4
,
2
}};
< / p>
cho
(
int
i =
0
; tôi & lt;
3
; i ++)
{
p >
cho
( code >
int
j =
0
; j & lt;
3
; j ++)
System.out.print (arr [i] [j] +
"" < / code>
);
< p class = "line number14 index13 alt1">
System.out.println ();
}
}
}
Đầu ra
2 7 9 3 6 1 7 4 2
Truyền mảng cho các phương thức
Giống như các biến, chúng ta cũng có thể truyền mảng cho các phương thức. Ví dụ: chương trình dưới đây chuyển mảng sang phương thức để tính tổng các giá trị của mảng.
Java
< / p>
< p class = "line number4 index3 alt1"> public
class
Kiểm tra
< / p>
{
public
static
void
main (Chuỗi args []) mã>
{
int
arr [] = { code >
3
,
1
, < / code>
2
,
5
,
4
};
sum (arr);
}
< / p>
public
static < / code>
void
sum (
int
[] arr)
{
int
sum =
0
;
cho
(
int
i =
0
; tôi & lt; arr.length; i ++)
sum + = arr [i]; < / code>
System.out.println (
"tổng các giá trị mảng:"
+ sum);
} < / code>
}
p >
Đầu ra
tổng giá trị mảng: 15
Độ phức tạp về thời gian: O (n)
Không gian phụ trợ: O (1)
< h3> Trả về Mảng từ các Phương thức
Như thường lệ, một phương thức cũng có thể trả về một mảng. Ví dụ, chương trình dưới đây trả về một mảng từ phương thức.
Java
< / p>
class
Kiểm tra
{
public < / p>
{
int
arr [] = m1 (); code >
cho
(
int
i =
0 code >
System.out.print (arr [ i] +
""
);
}
public
static
int
< code class = "trơn"> [] m1 ()
{
code>
return
new
int
[ ] {
1
,
2
,
3
};
}
}
pre> Đầu ra1 2 3Độ phức tạp về thời gian: O (n), Không gian phụ trợ: > O (1)
Đối tượng Lớp cho Mảng
Mọi mảng đều có một đối tượng Lớp được liên kết, được chia sẻ với tất cả các mảng khác có cùng kiểu thành phần.
Java
< / p>
p >
class < / code>
Kiểm tra
{
public
static
void
main (String args [])
{
< code class = "keyword"> int
intArray [] =
new
int
[
3
];
byte
byteArray [] =
mới
byte
[
3
];
short code >
shortsArray [] =
new
short
[
3
];
String [] strArray =
new
Chuỗi [
3
];
p >
System.out.println (intArray.getClass ());
System.out.println (intArray.getClass (). getSuperclass ( ));
System.out .println (byteArray.getClass ());
System.out.println (shortArray.getClass ());
System.out.println (strArray.getClass ());
}
}
Đầu ra
class [ Tôi lớp java.lang.Object lớp [B lớp [S class [Ljava.lang.String;Giải thích:
- Chuỗi “[I” là chữ ký kiểu thời gian chạy cho lớp đối tượng “mảng với kiểu thành phần.”
- Siêu lớp trực tiếp duy nhất của kiểu mảng là java.lang.Object .
- Chuỗi “[B ”Là chữ ký kiểu thời gian chạy cho đối tượng lớp“ mảng có kiểu thành phần. ”
- Chuỗi“ [S ”là chữ ký kiểu thời gian chạy cho đối tượng lớp“ mảng có kiểu thành phần ”.
- Chuỗi “[L” là chữ ký kiểu thời gian chạy cho đối tượng lớp “mảng có kiểu thành phần của Lớp”. Sau đó, tên lớp được theo sau.
Thành viên của mảng
Bây giờ, như bạn đã biết rằng mảng là các đối tượng của một lớp và lớp cha trực tiếp của mảng là một lớp Đối tượng . Các thành viên của kiểu mảng là tất cả các thành phần sau:
- Trường cuối cùng công khai, chứa số lượng thành phần của mảng. Độ dài có thể là số dương hoặc bằng không.
- Tất cả các thành viên được kế thừa từ Đối tượng lớp; phương thức duy nhất của Object không được kế thừa là phương thức clone của nó.
- Phương thức public, phương thức này ghi đè phương thức clone trong class Object và không có ngoại lệ đã kiểm tra nào span>.
Kiểu mảng và kiểu phần tử được phép của chúng
Kiểu mảngLoại phần tử được phépMảng kiểu trực quanBất kỳ kiểu nào có thể được thăng cấp ngầm thành kiểu đã khai báo. Kiểu đối tượng Mảng kiểu được khai báo hoặc là đối tượng con Các đối tượng lớp. Đối tượng lớp con của nó cho phép Các đối tượng lớp con của lớp ArraysIts Kiểu giao diện được cho phép. , “bản sao sâu” được thực hiện với mảng mới chứa bản sao của các phần tử của mảng ban đầu thay vì tham chiếu.
Java
class
Kiểm tra
{
public
static
void
main (String args [])
{
int code >
intArray [] = {
1
,
2
,
3
int
cloneArray [] = intArray.clone (); < / code>
mã>
System.out.println (intArray == cloneArray);
cho code >
(
int
i =
0
; i & lt; cloneArray.length; i ++) {
System.out.print (cloneArray [i] +
""
} < / code>
}
}
Đầu ra
false 1 2 3
Bản sao của mảng đa chiều (như Object [] []) là một" bản sao cạn ", tuy nhiên, có nghĩa là nó chỉ tạo ra một một mảng mới với mỗi mảng phần tử là một tham chiếu đến một mảng phần tử ban đầu, nhưng các mảng con được chia sẻ.
Java
< / p>
p >
class < / code>
Kiểm tra
{
public
static
void
main (String args [])
{
< code class = "keywor d "> int intArray [] [] = {{
1
,
2
,
3
}, {
4
,
5
}};
int
cloneArray [] [] = intArray.clone () ;
System.out .println (intArray == cloneArray);
System.out.println (intArray [
0
] == cloneArray [
0
]);
System.out.println (intArray [
1
] == cloneArray [
1
]);
}
p >
}
Đầu ra
false thật true
Các bài viết liên quan:
Bài viết này được đóng góp bởi Nitsdheerendra và Gaurav Miglani . Nếu bạn thích GeeksforGeeks và muốn đóng góp, bạn cũng có thể viết một bài báo bằng cách sử dụng write.geeksforgeeks.org hoặc gửi bài viết của bạn qua thư tới review-team@geeksforgeeks.org. Xem bài viết của bạn xuất hiện trên trang chính của GeeksforGeeks và trợ giúp những Geeks khác. Vui lòng viết nhận xét nếu bạn thấy bất kỳ điều gì không chính xác hoặc nếu bạn muốn chia sẻ thêm thông tin về chủ đề đã thảo luận ở trên.
Ghi chú cá nhân của tôi
Xem thêm những thông tin liên quan đến chủ đề cách tạo mảng java
Array vs. ArrayList in Java Tutorial - What's The Difference?
- Tác giả: Coding with John
- Ngày đăng: 2021-02-23
- Đánh giá: 4 ⭐ ( 9211 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Arrays vs. ArrayLists - What's the difference? How do you use each of them, and which one should you use and why?
We'll go in-depth about the similarities and differences between Array and ArrayList in Java, and talk about how to create them, add elements, remove elements, and more.
This is a beginner friendly beginner's Java coding lesson tutorial, where we'll talk all about using Arrays and ArrayLists.
Learn or improve your Java by watching it being coded live!
Hey, I'm John! I'm a Lead Java Software Engineer who has been in the industry for over a decade. I love sharing what I've learned over the years in a way that's understandable.
Let me know what else you'd like to see!
Links to any stuff in this description are affiliate links, so if you buy a product through those links I may earn a small commission.
📕 One of my favorite programming books, Clean Code by Robert Martin
https://amzn.to/3GTPVhf🎧 Or get the audio version of Clean Code for FREE with an Audible free trial
http://www.audibletrial.com/johncleancodePhone I use for recording:
https://amzn.to/3HepYJuMicrophone I use (classy, I know):
https://amzn.to/3AYGdbzComplete Java course:
https://codingwithjohn.thinkific.com/courses/java-for-beginnersDonate with PayPal (Thank you so much!)
https://www.paypal.com/donate/?hosted_button_id=3VWCJJRHP4WL2https://codingwithjohn.com
Full source code available here: https://codingwithjohn.com/array-vs-arraylist-source
Mảng (array) trong Java
- Tác giả: kungfutech.edu.vn
- Đánh giá: 4 ⭐ ( 5934 lượt đánh giá )
- Khớp với kết quả tìm kiếm: 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
Mảng (Array), cách sử dụng mảng trong java
- Tác giả: thaynhuom.edu.vn
- Đánh giá: 4 ⭐ ( 4614 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Một trong những giải thuật liên quan đến dãy số, sắp xếp, lưu trữ danh sách,... thì không thể không nhắc đến mảng . . .
[Java cơ bản] Khai báo, tạo, khởi tạo mảng trong Java
- Tác giả: www.codelean.vn
- Đánh giá: 3 ⭐ ( 9134 lượt đánh giá )
- Khớp với kết quả tìm kiếm: CodeLean.vn là nơi chia sẻ kiến thức của những người học, làm và dạy trong lĩnh vực công nghệ thông tin.
Khởi tạo mảng Java
- Tác giả: vi.tutorialcup.com
- Đánh giá: 3 ⭐ ( 9193 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Mảng trong Java - Khởi tạo mảng trong Java - Tìm hiểu về mảng và Cách khởi tạo mảng trong java và sử dụng các phương thức mảng
Java: Cách tạo mảng
- Tác giả: v1study.com
- Đánh giá: 4 ⭐ ( 1814 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Java: Cách tạo mảng
Mảng (Array) trong java
- Tác giả: viettuts.vn
- Đánh giá: 5 ⭐ ( 8648 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Mảng (Array) 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 trong java lưu các phần tử theo chỉ số và kích thước cố định.
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình