뱅뱅뱅
880
2018-12-03 19:38:45
6
495

java에서 String의 length에 대한 동작원리를 알 방법이 있나요?.


문자열의 길이는 구하는 length에 대해서 문득.. 동작원리가 궁금한데요..



String.java 내부에는 


 public int length() {
  return count;
 }

로 되어있어서... 저기서 count는 어떻게 구해지는 지.. 알 방법이있나요?

0
0
  • 답변 6

  • 엔카나
    535
    2018-12-03 19:48:55

    String 은 내부적으로 char형 배열을 사용합니다.

    count 는 그 배열의 길이정보를 가지고 있는거구요.

    0
  • gyuS
    49
    2018-12-03 21:19:59

    String은 int 나 char 가 자료형인 것과 달리 객체 타입인 것도 참고 하시고요.

    String은 길이가 length() 인 메소드를 이용하고 배열은 length를 사용하는건

    length 가 final이라 array.length=100 과 같이 배열의 크기를 변경할 수 없습니다.


    질문을 다시 설명드리면

    String 클래스는 내부적으로 문자열을 저장하기 위하여 char 형의 배열을 사용합니다.

    참고로 Java의 문자 인코딩 방식이 유니코드이므로 크기가 1이아닌 2byte 크기를 가집니다.

    따라서 String str = "안녕"; 의 str은 길이가 2인 char 배열을 할당 받아서 문자열을 저장하므로

    str.length() 는 2가 되고 사용된 메모리의 양은 4byte가 됩니다.

    0
  • 뱅뱅뱅
    880
    2018-12-04 09:52:25

    감사합니다!


    char형의 배열을 사용 했군요...


    몇만문자열의 length를 구하는데 단 몇초도 소비안하는 게 신기 했었는 데

    배열을 공부하면 알 수 있겠네요 !

    0
  • 엔카나
    535
    2018-12-04 11:33:33

    length 는 String 객체를 생성하는 시점에 초기화가 됩니다.

    이후 length() 를 호출하면 이미 초기화된 값을 리턴하죠.

    0
  • gyuS
    49
    2018-12-04 13:41:33
    해결되셨으면 채택해주세요 ㅎ
    0
  • 뱅뱅뱅
    880
    2018-12-05 08:44:41

    두분 다 감사합니다..


    채택이 한분 밖에 안되서 어쩌나 했습니다 ;; ㅋㅋ

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.