특별한 자료형 'char', & ASCII code

티스토리 메뉴 펼치기 댓글수0

Dev Center/JAVA start

특별한 자료형 'char', & ASCII code

seanhigher
댓글수0
자바에서의 자료들은 각 상황에 맞게 자동으로 변환된다는 프로모션의 특징을 가지고 있다. 그중에서도 'char' 의 형태는 더욱 특별하다. 자료를 나타낼 수 있는 형태가 무려 세가지에 달하기 때문!! 각 상황에 맞게 사용하지 않는다면 원하지 않는 결과를 얻을 수도 있다. 그런일이 그렇게 많지는 않지만....


'char' 형태로 나타내는 방법.
'char' 의 형태로 나타낼 수 있는 방법은, 유니코드, ASCII 코드, 문자의 세가지 방법이다. 가장 쉽게 사용할 수 있는 방법으로 다음과 같이 한 문자를 표현할 때 사용하게 된다.

char c = 'a';

중요한것은 꼭 홑 따옴표로 한 문자를 감싸 주어야 한다는 것이다. 만일 따옴표를 표시하지 않는다면 문자 'a' 대신에 'a'를 나타내는 아스키코드인 97이 변수 c 에 대입이 될 것이다. 하지만, 출력을 할 때 그 형태를 문자의 형태로 나타낸다면 아무런 문제 없이 'a' 라는 문자를 출력하게 될 것이다. 좀더 다른 이야기를 하자면, char 형은 하나의 문자로 나타낼 수도, 아스키코드내의 숫자의 형태로도 나타내는 것이 가능하다. 저장될때는 모두 문자의 형태를 갖지만, 출력하는 상황에 따라 그렇게 변환하는 것이 가능한 것이다.

public class Char {
    public static void main(String[] args) {
        char ch1 = '\u0061';
        char ch2 = 97;
        char ch3 = 'a';
        system.out.println("unicode : " + ch1);
        system.out.println("ASCII : " + ch2);
        system.out.println("character : " + ch3);
    }
}

위의 프로그램을 실행하면 다음과 같은 결과를 얻게 된다.

unicode : a
ASCII : a
character : a

똑같은 a 를 출력하는 것이지만, 다양한 방법으로 표현이 가능하다는 것이다.

아스키 코드를 사용하는 이유!
'char' 의 자료형은 아스키코드의 형태를 나타낼 수 있다. 하지만, 아스키코드나 유니코드같은 형태가 왜 필요한 것일까? 이것은 컴퓨터가 이진수 형태의 모습을 가지고 있기 때문이다. 우리가 이해할 수 있는 언어를 그대로 사용한다면 컴퓨터는 이해를 할 수 없는 것이다. 이것을 컴퓨터가 이해하기 위한 하나의 방법으로 10진수의 아스키코드나 16진수의 유니코드와 같은 형식이 필요한 것이다. 마치 우리가 영어를 이해하기 위해서 'I' 라는 단어가 '나' 를 표현하는 말이라는 것을 알아야 이해할 수 있는 것처럼 말이다.


ASCII code table
아스키코드는 컴퓨터와 의사소통의 기능 외에도, 키보드로 표현할 수 없는 표현들을 컴퓨터에 쉽게 전달해 줄 수 있는 방법이 되기도 한다. 키보드로 엔터를 친것과 같은 효과나, 탭키를 누른듯한 효과등을 코드값으로 대입해 놓음으로써 어느 기종에서나 동일하게 입력이 가능하게 되는 것이다.

 0  NULL  20  SC4  40  (  60  <  80  P  100  d  120  x
 1  SOH  21  NAK  41  )  61  =  81  Q  101  e  121  y
 2  STX  22  SYN  42  *  62  >  82  R  102  f  122  z
 3  ETX  23  ETB  43  +  63  ?  83  S  103  g  123  {
 4  EOT  24  CAN  44  '  64  @  84  T  104  h  124  |
 5  ENQ  25  EM  45  -  65  A  85  U  105  i  125  }
 6  ACK  26  SUB  46  .  66  B  86  V  106  j  126  ~
 7  BEL  27  ESC  47  /  67  C  87  W  107  k  127  DEL
 8  BS  28  FS  48  0  68  D  88  X  108  l    
 9  HT  29  GS  49  1  69  E  89  Y  109  m    
 10  LF  30  RS  50  2  70  F  90  Z  110  n    
 11  VT  31  US  51  3  71  G  91  [  111  o    
 12  FF  32  SP  52  4  72  H  92  \  112  p    
 13  CR  33  !  53  5  73  I  93  ]  113  q    
 14  SO  34  "  54  6  74  J  94  ^  114  r    
 15  SI  35  #  55  7  75  K  95  _  115  s    
 16  DLE  36  $  56  8  76  L  96  .  116  t    
 17  DC1  37  %  57  9  77  M  97  a  117  u    
 18  SC2  38  &  58  :  78  N  98  b  118  v    
 19  SC3  39  '  59  ;  79  O  99  c  119  w    
표1. 아스키 코드표

'char' 의 형태는 기본적으로 문자의 형태로 기억되기 때문에, 숫자로 형변환하여 사용하기 위해서는 숫자 '0' 을 나타내는 -48 을 계산해야 원하는 숫자의 값을 얻을 수 있다. 이 역시 한자리 숫자만 가능하다는 것을 기억해야 한다.
맨위로