2012-01-06 49 views
40

tôi tuyên bố một mảng như hình dưới đây:Mảng Chiều dài trong Java

int[] arr = new int[10]; 

Sau đó, tôi gán các giá trị sau đây để mảng:

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

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

int arrayLength = arr.length; 

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

+68

Tại sao bạn không chạy và tìm hiểu? – skaffman

+6

Tại sao không chỉ thử xem? Mảng không có phương thức 'length()', nhưng thử 'System.out.println (arr.length);' –

Trả lời

46

Nó chứa kích thước được phân bổ, 10. Chỉ mục chưa được gán sẽ chứa giá trị mặc định bằng 0 cho int.

+3

Có, mảng là phân bổ bộ nhớ tĩnh. –

+0

Bạn có thể hiển thị javadoc không? Tôi không biết tài sản "chiều dài" này ở đâu. –

3

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

34

Trước hết, length là thuộc tính, do đó, nó sẽ là arr.length thay vì arr.length().

Và nó sẽ trả về 10, kích thước được khai báo. Các yếu tố mà bạn không khai báo explicitely được khởi tạo với 0.

4

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 các số nguyên:

int[] intArray = new int[15]; 

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

Và một điều nữa, 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".

4

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

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

int[] arr = new int[10]; 

Java sẽ tạo ra một mảng với 10 yếu tố và khởi tạo tất cả các thành 0. Xem Java language spec để biết chi tiết về giá trị ban đầu cho điều này và các kiểu dữ liệu khác.

1

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

1

Nó phải là int a = arr.length; nên tránh dấu ngoặc đơn.

+3

Chào mừng bạn đến ngăn xếp tràn! 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 chờ một câu trả lời dài hơn điều này. Hơn nữa, bạn không trả lời điểm của câu hỏi - chỉ sửa chữa một lỗi đánh máy đã được nhắm mục tiêu trong một câu trả lời (câu trả lời cho câu hỏi) _and_ một bình luận câu hỏi. –

1

Nó chứa các kích thước phân bổ, 10. Các chỉ số còn lại sẽ chứa các giá trị mặc định là 0.

1

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

+0

Đây chỉ là một "Tôi giả định 0 không phải là một giá trị hợp lệ" kích thước và nếu đó là hữu ích là loại nghi ngờ. – Tom

+0

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

3

'

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

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

0 1 2 ...........> Index 2 4 5 ...........> Số

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

tuyên bố thứ hai' đầu ra là 3 vì chiều dài của mảng là 3 ... Xin đừng lẫn lộn giữa giá trị chỉ số và độ dài của mảng ....

cheers!

10

Để tìm độ dài của mảng 'A', bạn nên sử dụng thuộc tính độ dài. Nó là 'A.length', không sử dụng A.length() 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. enter image description here

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

Nếu bạn gặp bất kỳ vấn đề nào trong số này, cách đơn giản là chạy nó. Lập trình hạnh phúc

+2

(y) cho ảnh chụp màn hình! –

Các vấn đề liên quan