반응형

어제에 이어서,

배열에 대해서 조금 더 볼까해

 

일단은 배열의 사용법은 알아봤는데

배열은 양파같이 까도까도 계속 나오는 친구야

 

으디 한번 살펴볼까 ?


배열의 선언을 봤을건데

package project;
public class Main {
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5,6,7,8,9,10};
    
        for(int i = 0; i < arr.length; i++){        
            System.out.println(arr[i] + "번");
        }
        
        System.out.println(arr[1]);
    }
}

 

이렇게 선언이 되어있는걸 봤을거야

 

arr를 배열로만 선언을 해주고 그 안에 값을 넣어주었거든?

선언과 초기화를 해준거지

 


길이

 

길이를 설명하기 전, 

소스를 참고했으면 좋겠는데

 

배열을 위와 같이 선언도 가능하지만

아래와 같이 사용도 가능하고

 

또한 길이에 대한 녀석들을 사용할 때,

사용법에 대해 간단히 보여주기 위해서야

 

package project;
public class ArrayTest2 {
    public static void main(String[] args) {
        int arr[] = new int[11];
        String str = new String();
        str = "가나다라마파두부";
        
        System.out.println(arr.length);
        System.out.println(str.length());
    }
}

 

 

 

.length - (배열의 길이를 구함 : int[], double[], String[] . . . )

.length() - (문자열의 길이를 구함 : String,StringBuilder . . . )

.size - (컬렉션 타입의 길이를 구함ArryList, Set . . . )

 

길이, 크기를 확인 하기 위해서는

이렇게 3가지를 사용하고 있어

 

" 센치냐 미터냐.. 길이가 뭐임??"

 

길이는 쉽게 말해서 

"몇개인지 or 크기가 얼마나 되는지 알아봐줄게!!"

이런 친구야!

 

 

"배열은 11까지 사용이 가능해!"

"글자의 길이는 8글자로 이루어져 있어!"

 

이렇게 말이야!

 

좀 더 심화적으로 추가 설명을 하자면

 

Int의 경우는 21억이라는 한계치가 존재 하지만

String의 경우 기본적으로 char 타입의 배열을 사용하거든?

영어와는 달리 한글은 (우수우수) 1바이트가 아닌

유니코드로써 2바이트의 크기가 필요해

 

즉, 내가 쓴 "가나다라마파두부" 는 8글자로써

16바이트를 차지하고있지,

 

그럼 String의 최대 크기는 몇이냐?

정답은 "모르는데 어떻게 알아"

 

JRE는 프로세스 실행시, 할당 가능한 Heap Memory 크기를 지정 할 수 있는데

초기 Heap Memory와 최대 크기를 설정할 수 있어

Heap Memory는 CPU가 따로 관리하는 메모리가 아냐

그러다 보니까 나처럼 좀 자유분방한 아들같은 느낌인거야

 

심지어 new 샬라샬라 하면서 선언을 해주면 메모리를 할당하고

필요 없는 녀석의 경우 할당 해제를 해줘야지 메모리누수가 발생하지 않아

누수되는 부분을 처리해주는 친구가 하나 있는데 그건 나중에 설명할고얌

 

자바가 SUN이였을때의 가상머신은

 

초기 힙메모리는 64MB가 최대치임.. 

하지만 컴퓨터 운영체제에 따라 다를수도 있음 ㅇㅇ 

이라고도 말을하지만.. 현재는 뭐.. 어쨋든!

 

자바 규약을 둘러보면

"Heap Memory가 가변적일 경우 설정이 가능함 ㅇㅇ"

이렇게도 말하고..

 

뭐 말은 다양해

 

그냥 쭈~욱 정리하면 

운영체제에서 OK!!! 하는 최대한의 크기까지 설정이 가능하다 보는게 맞는거 같아


기본값

 

배열을 사용할 때, 

문자타입 배열 = null

정수 타입은 = 0

실수 타입은 = 0.0

 

이게 기본값이야

 

package project;
public class ArrayDefult {
    public static void main(String[] args) {
        int arr[] = new int[1];
        String str[] = new String[1];
        double dob[] = new double[1];
        
        System.out.println(arr[0]);
        System.out.println(str[0]);
        System.out.println(dob[0]);
    }
}

 

이렇게 int, String, double을 한번 알아볼텐데

따로 값을 넣지를 않았으니 

결과값으로 되어있겠지?

 

그럼 그 결과 값을 출력해 보는거야

 

결과


업무하면서 부랴부랴 정리 해봤는데 

나중에 내가 쭉 읽어보면서 수정도 필요할것같아 ㅋㅋㅋ

솔직히 쓰면서도 초심을 잃었나

쉽지가 않겠어.. 

이렇게 생각을 했거든 ㅋㅋㅋ

 

프로그래밍 언어라는게

가면 갈 수록 지루해 지는 이유가

 

어렵거든..!!

 

그래도 원하는 사람들에게는 도움이 되고자 해 

그럼 20000 : )

 

(수정하자 수정수정수정)

반응형