mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, November 28, 2006

Java/자바] 배열 사이즈 구하기; 배열 크기 얻는 함수는? Array Size; sizeof


자바에서 "배열 사이즈"를 얻는다는 것은, "배열 요소의 개수"를 구하는 것입니다. 여기에 배열 요소의 수를 구하는 법이 있습니다: ▶▶ 자바 Java] 배열 요소 개수 구하기; Number of Array Elements


sizeof 연산자로 구하는 법은?

C에는 sizeof 연산자가 있지만, 자바에는 없습니다. 자바에서는 배열의 진짜 크기를 알 필요가 없기 때문입니다. 자바 가상머신이 메모리 관리를 자동으로 알아서 해줍니다.

그렇지만 굳이 배열의 진짜 크기를 구해야 한다면 다음과 같은 방법이 있을 것입니다.

문자열 배열 크기 (글자 개수) 구하기 예제

소스 파일명: Foo.java
public class Foo {
  public static void main(String[] args) {

    String[] songs = { "사랑에 속고 돈에 울고", "백만송이 장미", "애정이 꽃피던 시절", "Saddle The Wind", "밤배" };

    int size = 0;

    for (int i = 0; i < songs.length; i++) {
      size += songs[i].length(); // 각 배열 요소의 글자 수 합계 구하기
      System.out.println(songs[i].length() + " : " + songs[i]);
    }

    System.out.println(); // 줄바꿈
    System.out.println("Total Array Size: " + size);

  }
}



컴파일 및 실행 결과:
D:\Z>javac Foo.java && java Foo
12 : 사랑에 속고 돈에 울고
7 : 백만송이 장미
10 : 애정이 꽃피던 시절
15 : Saddle The Wind
2 : 밤배

Total Array Size: 46

D:\Z>

글자 수는 (공백까지 포함하여) 총46개입니다. 자바에서 글자는 "16비트 유니코드 (UTF-16BE)"이기에, 한글이든 영문이든 공백이든 항상 2바이트입니다. 바이트 수로 따지면 곱하기 2 를 하여, 결국 songs 라는 문자열 배열의 크기는 92 바이트가 되는군요.

그렇지만 유니코드가 아닌 아스키 텍스트로 따진다면, 한글/한자 등은 2바이트, 영문/숫자/공백/기호 등은 1바이트로 계산해 주어야 합니다.


그리고 자바 자료형에서, int/float형 변수 1개는 4바이트, long/double형 변수 1개는 8바이트이기에
배열 요소 개수에, 4나 8 등의 바이트 수를 곱하면, 전체적인 배열 크기를 바이트 단위로 구할 수 있겠지요.

또한 책에 보면 자바의 불린(Boolean) 자료형은 "1비트" 크기라고 되어 있는데, 항상 1비트는 아니고 경우에 따라서 "1바이트"가 될 수도 있는 것 같습니다. 이것은 명확하게 규정이 되어 있지 않더군요.




tag: java
자바 | Java 프로그래밍

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top