Độ dài mảng trong Java


101

Tôi đã khai báo một mảng như hình dưới đây:

int[] arr = new int[10];

Sau đó, tôi đã gán các giá trị sau cho mảng:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

Sau đó, tôi đã khai báo và khởi tạo một biến số nguyên:

int arrayLength = arr.length;

Điều này sẽ hữu ích để tìm kích thước thực tế nhưng có phương pháp nào để tìm kích thước hợp lý của mảng không?

Câu trả lời:



71

Trước hết, lengthlà một tài sản, vì vậy nó sẽ là arr.lengththay vì arr.length().

Và nó sẽ trả về 10, kích thước đã khai báo. Các phần tử mà bạn không khai báo rõ ràng được khởi tạo bằng 0.


Không thể gọi length () trên kiểu mảng long [] Java (67108980)
Alessandro Ornano

22

Để tìm độ dài của một mảng, Abạn nên sử dụng thuộc lengthtính. Nó giống như A.length, không sử dụng A.length()nó chủ yếu được sử dụng cho kích thước của các đối tượng liên quan đến chuỗi.

nhập mô tả hình ảnh ở đây

Thuộc tính length sẽ luôn hiển thị tổng không gian được phân bổ cho mảng trong quá trình khởi tạo.

Nếu bạn gặp bất kỳ vấn đề nào như vậy, cách đơn giản là chạy nó. Chúc bạn lập trình vui vẻ!


6

Mảng là cấp phát bộ nhớ tĩnh, vì vậy nếu bạn khởi tạo một mảng số nguyên:

int[] intArray = new int[15];

Độ dài sẽ luôn là 15, bất kể có bao nhiêu chỉ mục được lấp đầy.

Và một điều khác, khi bạn intialize một mảng các số nguyên, tất cả các chỉ mục sẽ được điền bằng "0".


5

Trong Java, kích thước "thực tế" và "logic" của bạn là như nhau. Thời gian chạy lấp đầy tất cả các vị trí mảng với các giá trị mặc định khi phân bổ. Vì vậy, của bạn achứa 10.


5

Trong trường hợp này, arr.length sẽ trả về 10, kích thước của mảng bạn đã phân bổ. Kích thước logic không thực sự áp dụng ở đây, vì đây là một mảng có độ dài cố định.

Khi bạn khởi tạo mảng:

int[] arr = new int[10];

Java sẽ tạo một mảng có 10 phần tử và khởi tạo tất cả các phần tử này thành 0. Xem thông số kỹ thuật của ngôn ngữ Java để biết chi tiết về các giá trị ban đầu cho kiểu này và các kiểu nguyên thủy khác.


4
int[] arr = new int[10];

arrlà một intmảng kiểu có kích thước 10. Nó là một mảng các 10phần tử. Nếu chúng ta không khởi tạo mảng theo mặc định, các phần tử mảng chứa giá trị mặc định. Trong trường hợp giá trị mặc định của mảng int là0 .

length là một thuộc tính có thể áp dụng cho một mảng.
ở đây arr.lengthsẽ cho 10.


3

`

int array [] = new int [3]; array.length;

vì vậy ở đây chúng tôi đã tạo một mảng với không gian bộ nhớ là 3 ... đây là cách nó thực sự trông

0th 1, 2 ...........> Chỉ số 2 4 5 ...........> Số

Vì vậy, như bạn thấy kích thước của mảng này là 3 nhưng chỉ số của mảng chỉ lên đến 2 vì bất kỳ mảng nào bắt đầu bằng chỉ số 0.

câu lệnh thứ hai 'đầu ra sẽ là 3 vì độ dài của mảng là 3 ... Xin đừng nhầm lẫn giữa giá trị chỉ mục và độ dài của mảng ....

chúc mừng!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

Nó sẽ chứa kích thước thực của mảng vì đó là kích thước bạn đã khởi tạo mảng khi bạn khai báo. Java không có khái niệm về kích thước "lôgic" của một mảng, theo như người ta liên quan đến giá trị mặc định của 0 cũng hợp lý như các giá trị bạn đã đặt theo cách thủ công.


1

Nó chứa kích thước được cấp phát là 10. Các chỉ mục còn lại sẽ chứa giá trị mặc định là 0.


1

Nếu bạn muốn kích thước hợp lý của mảng, bạn có thể duyệt qua tất cả các giá trị trong mảng và kiểm tra chúng so với 0. Tăng giá trị nếu nó không phải là 0 và đó sẽ là kích thước logic. Vì kích thước mảng là cố định, bạn không có bất kỳ phương thức sẵn có nào, có thể bạn nên xem các bộ sưu tập.


Đây chỉ là kích thước "Tôi cho rằng 0 không phải là giá trị hợp lệ" và nếu điều đó hữu ích thì hơi nghi ngờ.
Tom

Tôi vừa nảy ra một ý tưởng để lấy độ dài của mảng (số 0 không hợp lệ). Như tôi đã nói, bạn có thể sử dụng bộ sưu tập để thao tác dữ liệu chính xác hơn.
Struse

1

Nó phải là:

int a = arr.length;

Dấu ngoặc đơn nên tránh.


5
Chào mừng bạn đến với tràn ngăn xếp! Vì đây là một câu hỏi đã hơn một năm và đã có sáu câu trả lời khác, tôi mong đợi một câu trả lời dài hơn thế này. Hơn nữa, bạn không trả lời điểm của câu hỏi - chỉ đơn thuần là sửa lỗi chính tả đã được nhắm mục tiêu trong câu trả lời (trả lời câu hỏi) nhận xét câu hỏi.
John Dvorak

0

Mảng Java thực sự có kích thước cố định và các câu trả lời khác giải thích cách .length không thực sự làm những gì bạn mong đợi. Tôi chỉ muốn nói thêm rằng với câu hỏi của bạn, thứ mà bạn có thể muốn sử dụng là ArrayList, đó là một mảng có thể phát triển và thu nhỏ:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Tại đây, phương thức .size () sẽ hiển thị cho bạn số lượng phần tử trong danh sách của bạn và bạn có thể phát triển điều này khi bạn thêm mọi thứ.


0

nếu bạn có nghĩa là "kích thước logic", chỉ số của mảng, thì chỉ cần int arrayLength = arr.length-1; vì chỉ số mảng bắt đầu bằng "0", vì vậy giá trị lôgic hoặc "chỉ số mảng" sẽ luôn nhỏ hơn kích thước thực bởi "một".


0

Mảng được cấp phát bộ nhớ tại thời điểm biên dịch trong java, vì vậy chúng là tĩnh, các phần tử không được đặt hoặc sửa đổi rõ ràng được đặt với các giá trị mặc định. Bạn có thể sử dụng một số mã như thế này, mặc dù nó không được khuyến khích vì nó không tính các giá trị mặc định, ngay cả khi bạn khởi tạo chúng một cách rõ ràng theo cách đó, nó cũng có khả năng gây ra lỗi. Như những người khác đã nói, khi tìm kiếm kích thước thực tế, ".length" phải được sử dụng thay vì ".length ()".

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.