1.실행흐름에 따른 메모리 구조
1. 메인메소드가 위치한 클래스 정보를 Method Area 에 로팅(유효검사)
2. Static 으로 정의된 변수를 준비하고 static 블록을 실행한다.
3. main메소드가 호출 되고 메인메소드내에 선언된 local 변수를 stack 영역에 생성
4. main 메소드내에 호출되고 있는 클래스에 대한 정보가 Method Area에 로딩 되며
2,3단계를 똑같이 실행한다.
5. main메소드에서 객체를 생성시 레퍼런스변수에 해당 클래스에 인스턴스 변수에
주소값이할당되고 인스턴스변수는 0, 또는 null로 초기화된다.
6. Method Area에 로딩 된 해당클래스에 각 각 객체의 주소값과 인스턴스 변수를 파라
미터로 전달
7. 각각의 메소드의 local변수에 그값을 초기화하고 블록을 수행후 리턴한 값을 생성된
인스턴스변수에 초기화 한다.(각 각의 객체마다 다른값을 가지게 됨)
8. stack 영역에 main메소드에서 호출한 클래스정보가 모두 삭제되고 6,7,8을 반복.
프로그램이 종료되면 모두 소멸한다.
2.기본 자료형과 유니코드.
정수형 : byte,short,int,long
실수형 : double, float
문자형 : char
부울린형 : boolean
1. 데이터 타입의 표현 범위
8bit -> 1byte
각비트별 0과1을 사용 이진 법으로 표기
n바이트의 표현범위
-2에n-1승~ 2n-1승 -1(-1이 되는 이유는 0의 표현범위를 할당하기 때문)
마지막비트는 부호비트로 0은 양수를 표현 1은 음수를 표현
char은 문자 타입으로 음수의 표현이 필요 없기때문에
표현 범위는 2에n승-1 가지로 표현 되고 문자데이터는 유니코드로 변환
16진법으로 저장 2byte(16비트)
ex) 0xAC1f (10~15는 a~f로 표현)
컴파일시 작은 데이터를 큰데이터를 담는것은 묵시적 형변환을 통해 가능하지만
큰데이터를 작은데이터에 넣게 될 경우 컴파일 오류가 발생하며 형변환을 해도
데이터 훼손될수 있다.
2. byte : 1바이트(8비트) 메모리 공간을 할당하며 8자리수 2진법으로 표현된다
-128 ~ 127
3. short : 2바이트(16비트)메모리에 공간을 할당하며 16자리수 2진법으로 표현된다
-32768 ~ 32767
4. int : 4바이트(32비트)메모리에 공간을 할당하며 java에 기본적인 정수 표현
데이타이다.
-2147483638 ~ 2147483637
5. long 8바이트(64비트) 메모리에 공간을 할당하며 아주큰 정수값의 표현에 쓰인다.
-아주큰값 ~ 아주큰값
6. float 4바이트(32비트) 실수를 저장 하는 자료형으로 소수점 자리를 포함 일곱번째까지
정확한 값을저장할수 있으나 그를넘어선 범위내에선 약간에 오차가 발생할수 있다.
때문에 부동 소수점 이라고 불리운다. 변수 선언시 데이타입력 마지막에 소문자 f
또는 대문자 F를 입력해야한다.
ex) float f = 1.5F;
7. double 8바이트(64비트) 실수를 저장 하는 자료형으로 소수점 자리를 포함
열다섯번째자리까지 정확한 값을 저장 할 수 있으나 역시 넘어선 범위에선 오차가 발생
할수 있다. 역시 부동 소수점이라 불리고 데이타마지막에 소문자l또는 대문자L 을
입력해야한다.
8. char 문자형 데이터저장의 자료형으로 2바이트(16비트) 의 데이터 크기를 갖고
총 65534 가지 문자를 표현할수 있다. 대입연산자를 통한 데이타 저장시''(어퍼스트
로피)가 필수적으로 사용되야하는데 char 형은 16진법 숫자를 데이터 저장되어
저장된 숫자에 따른 유니코드를 참고하여 문자데이터를 저장하기때문에 직접 유니
코드를 입력할수도 있지만 '' 명령어 안에 있는 문자데이터에 유니코드를 반환해주
기 때문에 이를 이용하는것이 효율적이다. char 형 데이타를 저장하는 방법은
여러가지가 있다.
ex)
char 문자0 = '가';
char 문자1 = '\uAC00'; = 유니코드값 지정
char 문자2 = 0xAC00; = 16진수 값 지정
char 문자3 = 44032; = 10진수 값 지정
char 문자4 = 0126000; = 8진수 값 지정
9. boolean : true 또는 false 를 반환하는 타입으로 jvm에 따라 다른 데이터 범위를
갖는다. 반복문 조건문등에 많이 쓰이는 데이터 타입.
댓글 없음:
댓글 쓰기