2011-11-12 4 views
-4
  1. String a[]List<String> a의 차이점은 무엇입니까?
  2. String a[]이 맞습니까? 또는 문자열 배열을 정의하기 위해 항상 String[] a을 사용해야합니까?
  3. String[] a을 선언 할 때 항상 초기화해야합니까? 어레이 이후

    자바 문자열에 대한 몇 가지 의문점이 있습니다

    String[] a = new String[5]; 
    a[2] = "Hello"; 
    a[3] = "World"; 
    a[2] = "Good Bye"; 
    

    메모리에 연속적으로 저장되고 난 수정할 때 문자열 새로운 스트링 객체를 생성한다 : 가정하자


난 이렇게. 이 모든 문자열은 위의 모든 명령문에 대해 Java에서 어떻게 저장되고 수정됩니까?

+1

이것은 매우 기본적인 자바 스테이터스 질문입니다. Google 검색을 통해 답변을 얻을 수있었습니다. –

답변

2
  1. String a[]String의 원시 Java 배열입니다. List a은 원시 (유형 없음) List입니다 (The Java Collections 참조). 당신은 아마 genericised 버전 : List<String> a을 원할 것입니다. 여기에 나열 할 차이점이 너무 많이 있습니다. 당신은 그 링크를 따라 가야합니다!
  2. String a[]String[] a은 동일합니다. 그래도 String[] a이 대회입니다.
  3. String[] a은 실제로 참조입니다. 로컬이 아닌 변수 인 경우 명시 적으로 초기화하지 않으면 암시 적으로 null으로 초기화됩니다. 일반적으로 String[] a = new String[10];과 같은 작업을 수행하려고합니다.
  4. 배열의 각 요소는 String에 대한 참조입니다. 기본 데이터 자체는 배열에 저장되지 않습니다.
+0

나머지 질문은 어떻게됩니까? 또한 첫 번째 질문의 경우 문자열 배열은 메모리에 연속적으로 저장되지만 목록의 문자열은 연속적으로 연속적으로 저장되지 않을 수도 있습니다. 이 올바른지? –

+0

@Tarun Kumar : 아니오, 맞지 않습니다. Java String 배열에 연속적으로 저장된 것은 * references * 문자열 객체입니다.이 객체는 힙 전체에 퍼져있을 수 있습니다. 이름에서 알 수 있듯이 Array를 기반으로하는 가장 일반적인 List 구현 인 ArrayList에 대해서도 마찬가지입니다. –

+0

그래서 Java 스토어의 목록조차도 실제 String 데이터를 참조한다는 것을 의미합니다. 이러한 참조는 반드시 메모리에 인접하지 않을 수도 있습니다. –

관련 문제