이 기사를 시작하기 전에 다음 질문을 고려하십시오
자동 완성 기능이있는 IDE를 사용하지 않고 배열의 길이를 얻는 방법은 무엇입니까? 그리고 줄의 길이를 얻는 방법?
나는 주니어 및 중간 수준을 포함하여 다른 레벨의 프로그래머에게 물었다. 그들 중 누구도이 질문에 정확하고 자신있게 대답 할 수 없습니다 (이 질문에 정확하고 자신있게 대답 할 수 있다면, 대부분의 중간 프로그래머 보다이 지식에 더 나은 것을 증명합니다). 많은 IDE에는 이제 코드 완료 기능이 있으므로 개발자는 많은 문제를 매우 피상적으로 이해할 수 있습니다.
위 질문에 대한 정답은 다음과 같습니다.
int [] arr = new int [3]; System.out.println (Ar
문제는 왜 배열의 길이 속성이 있지만 문자열은 그렇지 않습니까? 아니면 왜 문자열이 length() 방법을 가지고 있지만 어레이는 그렇지 않습니까?
배열이 길이 속성을 갖는 이유는 무엇입니까?
첫째, 배열은 동일한 유형의 고정 된 수의 값을 포함하는 컨테이너 객체입니다. 배열이 생성되면 길이가 고정됩니다. 배열의 길이는 최종 인스턴스 변수의 길이로 사용할 수 있습니다. 따라서 길이는 배열의 속성으로 간주 될 수 있습니다.
배열을 만드는 방법에는 두 가지가 있습니다.
1. 배열 표현식을 통해 배열을 만듭니다.
2. 값을 초기화하여 배열을 만듭니다.
어느 쪽이든, 배열이 생성되면 크기가 고정됩니다.
표현식을 사용하여 배열을 생성하는 방법은 다음과 같습니다. 이는 요소 유형, 배열의 치수 및 하나 이상의 차원의 배열의 길이를 지정하는 다음과 같습니다.
이 선언 메소드는 차원의 길이를 지정하기 때문에 요구 사항을 충족합니다 (배열의 int, 치수는 2, 첫 번째 차원은 3).
int [] [] arr = new int [3] [];
배열 초기화를 사용하여 배열을 만들 때 모든 초기 값을 제공해야합니다. 양식은 {및}를 사용하여 모든 초기 값을 함께 동봉하고 분리하는 것입니다.
int [] arr = {1,2,3};메모:
여기에 질문이있을 수 있습니다. 배열 크기는 초기화 될 때 지정되므로 int[][] arr = new int[3][];定배열의 2 차원 크기를 제공하지 않고 배열을 int[][] arr = new int[3][];定. 그렇다면이 ARR의 길이는 어떻게 "정의"입니까?
실제로 ARR의 길이는 3입니다. 실제로, 차원 수에 관계없이 Java의 모든 배열은 실제로 1 차원 배열입니다. 예를 들어, ARR, 3 개의 공간이 할당되며 각 우주는 1 차원 배열의 주소를 저장하여 "2 차원"배열이됩니다. 그러나 ARR의 경우 그의 길이는 3입니다.
int [] [] a = new int [3] []; system.out.println (a.length); // 3int [] [] b = new int [3] [5]; System.out.println (B.length); // 3
Java에 정의 된 문자열과 같은 배열 클래스가없는 이유
배열도 개체이므로 다음 코드도 합법적입니다.
Object obj = new int [10];
배열에는 Clone ()을 제외하고 객체 (Java의 배열의 상속 관계)에서 상속 된 모든 방법이 포함됩니다. 배열 클래스가없는 이유는 무엇입니까? Java에는 array.java 파일이 없습니다. 간단한 설명은 숨겨져 있다는 것입니다 (참고 : Java의 배열은 기본 데이터 유형과 약간 비슷하며 내장 유형이며 해당 실제 클래스가 없습니다). 이 질문에 대해 생각할 수 있습니다. 배열 클래스가 있다면 어떻게 생겼습니까? 모든 배열 요소를 저장하려면 여전히 배열이 필요합니까? 따라서 배열 클래스를 정의하는 것은 좋은 생각이 아닙니다. (번역기의 메모 : 여기에서 약간 혼란 스러울 수 있습니다. 그 이유는 다음과 비슷합니다. 닭의 문제는 계란과 닭으로 태어나고 은유가 적절하지 않을 수 있습니다. 혼자서 이해하십시오).
실제로 다음 코드를 통해 배열의 클래스 정의를 얻을 수 있습니다.
int [] arr = new int [3]; System.out.println (arr.getClass ());
산출:
클래스 [i
"클래스 [i"는 멤버 유형의 int 배열 인 클래스 객체의 런타임 유형의 서명을 나타냅니다. "
문자열에 길이 () 메소드가있는 이유는 무엇입니까?
문자열 뒤에있는 데이터 구조는 숯 배열이므로 불필요한 속성을 정의 할 필요가 없습니다 (속성은 이미 숯으로 제공되어 있기 때문에). C와 달리, Java의 char 배열은 문자열과 같지 않지만 문자열의 내부 메커니즘은 숯 어레이에 의해 구현됩니다. (참고 : C 언어에는 문자열 클래스가 없으며 문자열 정의는 일반적으로 char string[6] = "hollis"; )
참고 : char []를 문자열로 변환하는 다음과 같은 방법이 있습니다.
char [] s = { 'a', 'b', 'c'}; 문자열 string1 = s.tostring (); String String2 = new String (s); String String3 = String.valueof (s);요약
위는이 기사의 전체 내용입니다. 이 기사의 내용이 Java를 배우거나 사용하는 모든 사람들에게 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.