자바 문자열 배열 : 메소드의 크기가 있습니까?


152

나는 PHP 배경에서 왔으며 PHP array_size()에는 배열의 얼마나 많은 요소가 사용되는지 알려주 는 기능이 있습니다.

String[]배열에 대해 비슷한 방법이 있습니까? 감사.


3
허, 모든 답변은 같은 분 안에 있었다.
jjnguy 2016 년

1
아, PHP는 복잡한 글로벌 네임 스페이스를 가지고 있습니다. 좋은 옛날 ...
kevinji

2
내가 생각하는 그는 ARRAY_SIZE되지 않음) PHP의 수를 (의미 ()
여호수아 화상

답변:


277

예, .length(방법이 아닌 속성과 유사) :

String[] array = new String[10];
int size = array.length;

2
안녕하세요, 배열 객체의 가능한 모든 속성과 기능을 나열하는 문서를 어떻게 찾을 수 있습니까? 내가 찾을 수있는 유일한 문서 인 Arrays 객체를 의미하지는 않습니다.
GMsoF

1
@GMsoF "[]"(Arrays 객체가 아닌 배열)에 대한 문서는 실제로 Java 사양입니다. .eg docs.oracle.com/javase/specs/jls/se7/html/jls-10.html 편집 : 아 ... 댓글은 2013 년부터입니다 ...
Acapulco

44
array.length

실제로는 메소드가 아닌 배열의 최종 멤버입니다.


2
IIRC, 그것은 실제로 필드가 아니며 단지 하나처럼 보입니다.
Tom Hawtin-tackline

아, 그럼 뭐야? 특별한 배열 것?
jjnguy 2016 년

3
필드 액세스 op 코드가 아닌 특수 배열 길이 op 코드로 컴파일되는 "의사 필드"
피트 Kirkham

2
이 필드는 §10.7 ( java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 ) 을 준수하는 필드입니다 . "공개 최종 필드 길이. 배열의 구성 요소 수 ( 길이가 양수이거나 0 일 수 있습니다. ")
Michael Myers

19

또한 다차원 배열이있는 경우 적절한 축 / 튜플 / 차원에 도달 할 때까지 쿼리중인 배열에 '[0]'을 추가하여 각 차원을 얻을 수 있습니다.

이것은 아마도 다음 코드로 더 잘 설명 될 것입니다.

public class Test {
    public static void main(String[] args){
        String[][] moo = new String[5][12];

        System.out.println(moo.length); //Prints the size of the First Dimension in the array
        System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
    }

}

출력을 생성합니다.

5
12

15

array.length 최종 속성

그것은 공공 및 최종 재산입니다. Java의 배열은 크기에 따라 변경 불가능하지만 요소 값에 따라 변경 가능하므로 최종입니다.


14

배열은 객체이며 길이 필드가 있습니다.

String [] haha ​​= { "olle", "bulle"};

haha.length는 2입니다


nitpick에. 그러나 배열은 Java의 객체가 아니라고 생각합니다. 두 가지 참조 유형의 변수 중 하나입니다. 다른 하나는 물체입니다.
jabbie

2
@jabbie : 정말요? 당신은 그것에 대한 참조가 있습니까? Object o = new String [] { "hello"};
Simon Nickerson

simon 나는 진술이 효과가있는 이유는 그들이 모든 원시적 유형에 대해 반사성 클래스를 도입했기 때문이라고 생각한다.
브라이언 스위니

9
docs.oracle.com/javase/specs/jls/se8/html/jls-10.html 의 첫 번째 문장을 읽고 배열이 객체가 아니라고 알려주십시오. ;)
Michael Myers

1
당신은 다른 변수 이름을 사용할 수 있습니다, 그것은 나에게 산만 해
Space Rocker

11

자바에는 length배열에서 크기를 알 수 있는 필드가 있습니다.

    String[] s = new String[10];
    System.out.println(s.length);

1
무엇이 될 수도 있고 아닐 수도있는 기술에 익숙하지 않고 간단하고 간결한 답변을 제공해 주셔서 감사합니다. 당신을 위해 +1. :)
Joshua Burns

9

함수가 이것을 원한다면

Object array = new String[10];
int size = Array.getlength(array);

int [], byte [] 또는 Object []와 같은 배열 유형을 모르는 경우에 유용합니다.


6

명확하게하는 길이 Stringarray명확히 하는 것에는 차이가 있습니다 :

int a[] = {1, 2, 3, 4};
String s = "1234";

a.length //gives the length of the array

s.length() //gives the length of the string

명확하다면 질문에서 업데이트해야합니다.
Whitecat

5

대답은 "모두"입니다. Java 배열에는 고정 된 수의 요소 슬롯이 할당됩니다. "길이"속성은 몇 개인 지 알려줍니다. 이 숫자는 어레이 수명 동안 변경할 수 없습니다. 크기 조정이 가능한 동등한 경우 java.util.List 클래스 중 하나가 필요합니다. size () 메소드를 사용하여 사용중인 요소 수를 찾을 수 있습니다.

그러나, "사용에서"거기하고있어 사용 중 . 클래스 객체 배열에서 요소가 null 객체 인 요소 슬롯을 가질 수 있으므로 길이 속성에 포함되지만 대부분의 사람들의 정의는 사용되지 않습니다 (응용 프로그램에 따라 YMMV). 널 / 널이 아닌 수를 리턴하기위한 내장 함수가 없습니다.

목록 개체에는 "사용 중"에 대한 또 다른 정의가 있습니다. 기본 스토리지 구조의 과도한 생성 / 파괴를 피하기 위해 이러한 클래스에는 일반적으로 패딩이 있습니다. 내부적으로 사용되지만 반환 된 size () 메서드에는 포함되지 않습니다. 그리고 add 메소드를 통해 List를 확장하지 않고 해당 항목에 액세스하려고하면 잘못된 색인 예외가 발생합니다.

따라서 목록의 경우 널이 아닌 커미트 된 요소, 커미트 된 모든 요소 (널 요소 포함) 또는 현재 할당 된 확장 공간을 포함한 모든 요소에 대해 "사용 중"을 가질 수 있습니다.


2

위의 모든 답변이 적절합니다. 관찰해야 할 중요한 것은 배열에는 길이 속성이 있지만 길이 방법은 없습니다. Java에서 문자열과 배열을 사용할 때마다 직면 할 수있는 세 가지 기본 모델은 다음과 같습니다.

  1. 문자열 s = 새 문자열 ( "vidyasagar");
    System.out.println (s.length ()); //이 경우에는 String 만 사용합니다. 문자열에 길이 속성이 없습니다. length () 메소드를 사용해야합니다.
  2. int [] s = 새로운 int [10]; System.out.println (s.length); // 여기서는 배열의 길이 속성을 사용합니다.
  3. 문자열 [] s = 새 문자열 [10];
    System.out.println (s.length); // 여기서는 데이터 유형이 문자열이지만 단일 문자열이 아닙니다. s는 문자열 배열에 대한 참조입니다. 따라서 배열의 길이 속성을 사용하여 해당 배열에 몇 개의 문자열을 넣을 수 있는지 표현합니다.

1

실제로 귀하의 질문에 대한 대답은 아니지만 배열을 늘리거나 줄일 수있는 배열을 원한다면 java에서 배열을 사용하지 않아야합니다. ArrayList 또는 다른 List 구현 을 사용하는 것이 가장 좋습니다 .

그런 다음 size ()를 호출하여 크기를 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.