본문 바로가기

국비과정/JAVA (기초)

20230602 _[2일차]_03. 데이터타입2

문자타입

 

문자형 : 한글자만 저장합니다. 문자 하나를 저장하기 위한 타입

반드시 값으로는 문자 하나만 존재해야 하며, 하나 이상일 경우엔 String(문자열)에 저장합니다.

char타입은 정수 타입입니다.

 

- 크기는 음수가 없는 2byte의 범위를 가집니다. (0 ~ 65,535)

- 문자값을 표현할 때에는 반드시 홀따옴표를 이용.

- 정수타입이기 때문에 int에 프로모션 가능.

- int값 또한 문자로 변경 가능 (cast)

 

package jun02;

public class DataType04 {
	public static void main(String[] args) {
		char ch = '가';    // 문자열 "", 캐릭터 ''
		ch = 'A';
		ch = '價';
		ch = '\ub059';    // 유니코드 표기, 아스키코드
		System.out.println(ch);   // 끙
		
		String str = ch + "";     // 캐릭터 + 문자열 = 연결
		System.out.println(str);  // 끙
		
		//     0 1 2 3 4
		str = "안녕하세요";
		System.out.println(str);  // 안녕하세요
		
		// 문자열 자르기 -> char타입으로 나옴
		ch = str.charAt(0);       // charAt()
		System.out.println(ch);   // 안
		
		ch = '9';
		System.out.println(ch);  // 숫자x, 문자 '9' (문자리터럴)
		int ch2 = 3;
		System.out.println(ch + ch2);  // 60 (57 + 3) 
        
		// 아스키코드에서 문자'9' = 57
	}

}

 

 

* 아스키코드 :  0에서 127까지의 숫자를 이용하여 문자를 표현.

                        1바이트로 구성, 8비트(==1바이트) 중 7개의 비트만 사용.

                        (1비트는 Parity Bit _오류 체크를 위한 비트로 사용)

 

* 유니코드2바이트, 즉 16비트로 문자를 표현.

                     Plane이라 불리는 17개의 영역이 각각 2^16개의 문자를 표현. (총 1,114,112 )

 

package jun02;

public class DataType04 {
	public static void main(String[] args) {
		char ch = '가';
		ch = '9';
		System.out.println(ch);
		
		
		int num = 33;
		
//		ch = num;                // 불가능
		ch = (char) num;         // 형변환 (숫자 -> 문자)
		System.out.println(ch);  // !  
		// 아스키코드에서 33 = !
		
//		ch = ch + 9;              // 불가능
		ch = (char) (ch + 9);     // 형변환 (숫자계산후 -> 문자)
		System.out.println(ch);   // *
		// 아스키코드에서 (33+9=42) = *
		
		System.out.println( (char) 65 );  // A
		System.out.println( (char) 66 );  // B
		System.out.println( (char) 67 );  // C
		System.out.println( (char) 68 );  // D
	
		for (int i = 97; i < 123; i++) {
			System.out.println( (char) i );
		}
		
		System.out.println("");  // a ~ z
		
        
		for (int i = 65; i < 91; i++) {
			System.out.println( (char) i );
		}
		
		System.out.println(""); // A ~ Z
        
		// for구문_반복문
	}

}

10진수    2진수
  0              0
  1              1  = 1비트
  2            10
  3            11
  4          100
  5          101
  6          110
  7          111  = 3비트 = 2^2 + 2^1 + 2^0
  8        1000
  9        1001
 10       1010  = 4비트

  ...         ...

 

int타입 하나 선언할 때마다 4byte의 메모리 공간 차지(점유)하게됨. (1바이트 = 8비트)

지금은 int나 double로만 사용하지만, 현업에서는 byte등 다른 타입 필요할수도 있음.


논리타입

package jun02;
/* 불리언 boolean
** 저장할 수 있는 값 : true 참 ON 1 / flase 거짓 OFF 0
*/

public class DataType05 {
	public static void main(String[] args) {
		
		boolean check = false;  // 상태
		System.out.println( 1 + 2 == 3 );  // true
		//  ==(등호두개) 같아?
		
		// 다르게 표현
		boolean check2 = 1 + 2 == 3;
		System.out.println(check2);       // true
		
		
		boolean check3 = true;  // 상태
		System.out.println(!check3);     // false
		//                반전 not
	}

}