JAVA

상수(contant) / JAVA의 데이터 타입 (기본형 & 참조형)

태로미 2023. 2. 1. 22:22

 

 

 

 

▶▶   상수 (contant)

–   항상 같은 값을 갖는, 즉 변하지 않는 데이터.
–   자바에서 사용하는 실제 데이터를 리터럴(Liternal)이라고 함.
     ex   ) 정수 5  /  실수 3.14  /  문자 'A'  /  문자열 "Hello, World!" 등


EX   )

System.out.println(1); 				// 정수형 리터럴
System.out.println(3.14); 			// 실수형 리터럴
System.out.println(true);			// 논리형 리터럴
System.out.println(false);			// 논리형 리터럴
System.out.println('A');			// 문자형 리터럴
System.out.println(5L);				// 정수형(long형) 리터럴	// 접미사 L 붙임
System.out.println(1.5f);			// 실수형(float형) 리터럴	//접미사 f 붙임
System.out.println("Hello, World!");		// 문자열형(String) 리터럴

✓   정수형(long형) 리터럴에는 무조건 대문자 'L'을 붙이지만, 실수형(float형) 리터럴에는 관례적으로 소문자 'f'를 붙임.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

▶▶   데이터 타입(Data Type) = 자료형

–   사용할 데이터의 종류를 구분해 놓은 것이며, 크게 두 가지 타입으로 분류함.

 

1.   기본 데이터타입 (Primitive Type)

2.   참조 데이터타입 (Reference Type)

 

 

 

 

 

▶   기본 데이터타입 (Primitive Type)

  1Byte(8bit) 2Byte(16bit) 4Byte(32bit) 8byte(64bit)
논리형 boolean      
정수형  byte short int long
실수형      float double
문자형   char    

   위의 8가지를 제외한 나머지는 모두 참조형 데이터타입이므로 기본 데이터타입은 외워두는게 좋음.

 

 

 

 

 

▸   정수형 데이터타입

–   메모리 크기에 따라 표현 가능한 정수의 범위가 달라짐.

 


•   byte   (1Byte  =  8bit)          :       2^8         =              256가지                   =       -128    ~    +127    표현 가능 (0포함)
•   short  (2Byte  = 16bit)         :       2^16       =           65536가지                  =       -32768   ~   +32767   표현 가능
•   int      (4Byte =  32bit)         :       2^32       =       약 -21억 ~ +21억            =       정수의 기본형
•   long   (8Byte =  64bit)         :       2^64       =       약 -922경 ~ +922경        =       int보다 큰 데이터타입 숫자 사용시

✓   사실상, 현대에서는 메모리 공간이 충분히 여유롭기 때문에 byte & short타입을 사용하지 않고 int & long타입을 사용.


EX   )   byte타입 변수

→   byte타입에 들어갈 수 있는 정수의 범위는 -128 부터 +127 까지.

   128이라는 정수는 byte타입의 변수b에 들어갈 수 없음.

 

 

EX2   )   short타입 변수

→   short타입 저장 가능한 정수의 범위는 -32768부터 +32767까지.

→   short타입 변수s를 선언하고 정수 128과 정수 32767도 저장가능 하지만,

       32768은 저장 가능한 범위를 벗어났기 때문에 오류 발생함. 

 

EX3   )   int타입 변수

✓   오류 1

–   int타입 저장 가능한 정수의 범위는 최대치가 2147483647까지만 표기 가능함.
–   int범위를 벗어나는 리터럴은 반드시 접미사'L'을 붙여서 long타입으로 표기해야함.

 

✓   오류 2

–   int타입의 범위를 벗어나는 정수에 접미사 L을 붙여서  long타입으로 만들어 줬으나,

     정작 long타입 정수는 int타입 변수에 저장할 수 없으므로 오류가 발생함.

–   int타입보다 크지 않은 정수도 접미사L을 붙이면 long타입으로 취급됨.

 

✓   오류 3
–  정수5는 int 범위에 포함되지만, 접미사 L을 붙이면 long타입으로 취급되므로 5L은 long타입.

    int타입 변수 i에 저장할 수 없음.

 

 

 

 

 

   실수형 데이터타입

 

•   float f        =   3.14f;

–   접미사가 없으면 double타입으로 인식되므로 float타입에 변수를 저장할 수 없음.

–   접미사는 f & F 둘 다 되지만, 관례적으로 소문자f를 사용함.

 

•   double d   =   3.14;

–   실수형 데이터타입(double) 변수d에 3.14 초기화.



 

 

▸   논리형 데이터타입 –   boolean

–   특수한 값인 true 또는 false만 사용 가능하며, 무조건 소문자로만 작성.


EX   )

✓   오류 1

–   boolean타입인 bool 변수에는 true 또는 false값만 넣을 수 있으므로 '1' 이라는 값은 저장할 수 없음.

 

✓   오류 2

–   true와 false값은 무조건 소문자만 사용 가능.

 

 

 

 

 

▸   문자형 데이터타입 –   char

–   내부적으로 정수형 데이터로 처리됨.
     2byte(16bit) 크기의 범위를 사용하며, 정수 범위 0~65535 사이의 값을 가짐. (음수 사용x)

–   1개의 문자를 작은따옴표(' ')로 둘러싸서 표현 → 작은따옴표 내의 문자 1개가 정수형으로 변환되어 처리됨.

–   유니코드(unicode) 표현 방법 사용

더보기

아스키코드(ASCII, 7bit – 미국 표준 문자 코드)를 기반으로 나머지 문자를 추가하여 만든 코드 체계.

전 세계의 모든 문자를 표현할 수 있음.

ex   )   'A' = 65,   'a' = 97,   '0' = 48

–   10진수로 된 코드값을 사용하지만 입력 시 16진수 코드 4자리를 사용하며,
      ' \ ' 기호와 ' u '를 쓰고 16진수 xxxx형태의 유니코드 값을 표현함.

      ex   )  65 = \u0041


EX   )  char타입 변수 만들기

char ch = 'A';

ch = 'ABC'; 		// 오류! 반드시 1개의 문자 포함되어야 함
ch = ''; 		// 오류! 반드시 1개의 문자 포함되어야 함
ch = ' '; 		// 공백 사용 가능

ch = 65;		// 10진수 코드값으로 지정도 가능(정수65 = 'A')
ch = '\u0041';		// 유니코드 표기법 사용 가능(16진수 0041 = 정수65)
ch = 'A';

→   char타입 리터럴을 표기하기 위해 작은따옴표로 둘러싸며, 작은따옴표 사이에는 반드시 1개의 문자가 포함되어야 함.

   65  ==  \u0041  ==  A  모두 같은 값을 가짐.

 

 

ch = '가';
System.out.println(ch);		// == 가

ch = '\uAC00';
System.out.println(ch); 	// == 가

ch = '\uAC01';
System.out.println(ch); 	// == 각

→   한글 다른 나라 문자도 표현 가능.

   '\uAC00'  == 가 에서 맨 끝자리를 +1 하면,  '\uAC01' == 각 이 나옴.

 

 

 

 

 

 

 

2.   참조 데이터타입 (Reference Type)

–   기본 데이터타입을 제외한 모든 것이 참조 데이터타입.

 

 

 

 

 

▸   문자열을 저장하기 위한 데이터타입   —  String

–   기본 데이터타입이 아닌 참조 데이터타입 (메모리크기가 모두 4Byte)
–   문자 데이터를 표현하는 char타입은 1개의 문자만을 작은따옴표('')로 둘러싸지만,
     문자열 데이터를 표현하는 String타입은 0개 이상의 문자열을 큰따옴표("")로 둘러싸서 표현함.

–   아무 문자도 포함하지 않는 "" 이러한 문자열은 널스트링(null String)이라고 함. 


EX   )

   아무 문자도 포함하지 않는 "" 널스트링에서는 아무것도 출력이 안됨.

   char A와 String A는 데이터 타입이 다르므로, String A는 정수65로 표현이 안되고 문자열 'A'로 표현됨.

 

 

 

 

 

 

 


 

 

 

Comment

옛날에는 컴퓨터 메모리 공간이 충분하지 않아서 byte & short타입을 사용해가며
어떻게든 최대한 공간을 활용해서 그득그득 넣으려 했다는데...
요즘은 컴퓨터 사양이 좋아 그럴 필요가 없다는게 놀라우면서도 신기하당ㅋㅋㅋ
데이터 타입을 이렇게 분류할 수 있고
각각 표현할 수 있는 범위가 정해져 있는것도 참 흥미롭다! !!! ! !
빨리 데이터타입뿐만 아니라 데이터크기와 진수개념도 다 잡아야지!~!!!