OPEN between Secret

데이터 타입 본문

T.N.V/c & java & 변수

데이터 타입

해가꿈꾸는달 2017. 11. 22. 21:34
반응형

primitive type(원시형)

- 원시형은 사용시 객체 생성을 하지 않고 바로 사용 할 수 있다.

- 자주 사용하는 것들이라 편의를 위해서 그렇게 된 것 같다.

정수형

byte(8bit)

short(16bit)

: short는 int 보다 짧아서 short

-> byte 랑 short 는 JVM의 명령어 set에 이들을 처리하는 명령어가 없다. 따라서 이들의 연산을 하기 위해서 컴파일러가 byte랑 short들 갖고 올때 int로 형 확장하여서 갖고 온다.  그래서 byte 나 short 로 저장해봤자 실제 연산 시에는 int로 형변환을 해서 사용해야 하기 때문에 int를 기본형으로 두고 있지 않나 생각이 든다.

int   (32bit)

: 정수형에서 기본. 

long(64bit)

: long 은 int 보다 길어서 long

실수형

float(32bit) 

: 전기 전자 기술자 협회(IEEE)에서 개발한 컴퓨터 부동소수점을 표현하는 가장 널리 쓰이는 표준인 IEEE754 의 단정도에 따라 32bit

double(64bit)

: 전기 전자 기술자 협회(IEEE)에서 개발한 컴퓨터 부동소수점을 표현하는 가장 널리 쓰이는 표준인 IEEE754 의 배정도에 따라 64bit

문자형

char(16bit)

: java는 문자를 유니코드를 따르기 때문에 16bit. C 언어는 아스키 코드를 따르기 때문에 8bit.

: 컴퓨터는 처음 영어 권에서 나왔기 때문에 그떄 컴퓨터의 언어를 이해시키기 위해 나온 문자는 알파벳 대,소문자랑, 몇몇 특수문자를 합하여 120개 정도면 충분히 표현할수 있었다. 그래서 초긱 아스키 코드의 크기는 7bit. 그러다 컴퓨터가 점점 대중화 대면서 7bit로는 영어 외의 문자를 표현할수가 없어서 1bit를 추가시킨 확장 아스키코드가 나옴.  0~127 까지는 기존 아스키 코드고 1bit 추가한 128~256 까지를 나머지 나라에서 각 나라의 문자를 넣어서 사용했기에 표준화가 필요함.

그래서 마이크로소프트, 애플같은 대형업체에서 표준화를 시켜서 나온게 유니코드다. 표준화 시킬때 최소 15비트 이상은 되어야 모든 문자를 포함할 수 있다하여 유니코드는 16bit로 나옴.

 논리형

boolean(true, false)

: boolean도 jvm의 명령어 set 에서는 처리하는 명령어가 없기 때문에 int로 형변환을 한다. (자세한 내용은 잘 모르겠음)

reference type(참조형)

문자열   

String(4byte?)

: String은 reference 타입. 위에 정수형, 실수형, 문자형, 논리형들은 기본형으로써 따로 객체를 생성하지 않고 사용할수 있는데 String은 참조형이면서도 따로 객체를 생성하지 않고도 사용할수 있음.

그 이유가...

1. JAVA에서는 특별히 String은 너무 자주 쓰기때문에 편리성을 위하여 기본형처럼 사용할 수 있게 해줬다는 내용도 있음.

2. 자바 개념중 리터럴(값 그 자체가 문자? ) 이라는 개념이 있는데.  위의 기본형들 중 정수형, 실수형, 캐릭터들처럼 값 자체로써 쓰이는 애들을 리터럴이라 부름. 그중 특이하게 String 도 리터럴로 쓰이게 되어있는데. 아마 이거때문에 String 을 기본형으로 사용할 수 있지 않나 싶기도 하다.

3. String 클래스 내부를 보면 char[] 형식으로 값을 갖고 있다. 

즉, String은 char[]을 사용하기 쉽게 만들어 놓은 클래스이다. 메모리에 저장하는것은 char[]을 저장하는것과 같다.


반응형

'T.N.V > c & java & 변수' 카테고리의 다른 글

JVM 메모리 구조  (0) 2017.11.23
끄적끄적  (0) 2017.11.20
C언어 & Java  (0) 2017.11.17