상수와 변수, 자료형
  상수 : 항상 일정한 값을 유지하는 데이터
  변수 : 특정 상황에 따라 변화하는 데이터
  자료형 : 상수나 변수의 유동적인 데이터를 저장할 수 있는 크기를 규정하는 형태

@@ 하나하나 예를 들어주면서 설명하며 특히 정수형중 byte부분은 좀더 상세히 설명

  - 1.논리형 자료형
      1)boolean : 사용바이트 1byte, 입.출력범위 : true/false => 형변환이 안된다
                  예) boolean bool = false;("false",'false'는 안된다)
  public class Exec_01{
    public static void main(String[] args){
      boolean bool = true;
      System.out.println("bool의 값은 "+bool);
    }
  }
  - 2.정수형 자료형
      2)byte : 사용바이트 1byte, 입.출력범위 : -128 ~ 127
               예) byte by = 123;(초기화를 꼭 시켜줘야 한다 - 스택영역에 저장)
               127 + 1 프로그램 하나를 실행시켜 보자.
               이프로그램의 원리를 설명해 주도록 하자(시계를 예로 들면서)
  public class Exec_02{
    public static void main(String[] args){
      byte by = 127;
      by++;
      System.out.println("byte값 127 + 1 = "+by+"입니다");
    }
  }
      3)char : 사용바이트 2byte, 입.출력범위 : 0 ~ 65,536(유일한 unsigned data)
               유니코드를 도입해서 2Byte로 이루어져 있다
               예) char ch = 65('A'의 아스키 코드 값)
                   char ch = 'A'(작은따움표는 ASCII코드 값을 의미한다)
                   char ch = '\u0041';(\u는 유니코드를 의미하는 표시이고
                                       뒤의 4자리는 'A'를 16진수로 표현한 값이다
  public class Exec_03{
    public static void main(String[] args){
      char ch1 = 65;
      char ch2 = 'A';
      char ch3 = '\u0041';
      Sytem.out.println("ch1 = "+ch1+", ch2 = "+ch2+", ch3 = "+ch3+"입니다");
    }
  }
      0 = \0 or NULL => NULL 문자
      8 = \b back space => 백스페이스 문자
      9 = \t tab     => 탭 문자
     10 = \n         => 한줄개행(새로운 라인의 커서를 이동, 바로 아래쪽으로 이동)
     13 = \r         => 현재줄의 가장 첫 번째로 이동 (\r\n으로 사용한다)
     27 = 'esc'      => esc키 아스키 값
  48-57 = '0' ~ '9'  => 숫자 아스키 값
  65-90 = 'A' ~ 'Z'  => 대문자 아스키 값
 97-122 = 'a' ~ 'z'  => 소문자 아스키 값

     4)short : 사용바이트 2byte, 입.출력범위 : -2^15~2^15-1(-32,768 ~ 32,767)
               예) short sh = 12345;
               정수형으로 잘 사용되지 않는다.
 
     5)int : 사용바이트 4byte, 입.출력범위 : -2^31~2^31-1(-2,147,483,648~2,147,483,647)
             예) int i = 100;
             4byte 메모리를 기억, 모든 정수의 기본 자료구조가 int형이다.
             정수 연산시에 발생하는 결과 값은 모두 int형으로 표현
             byte a = 10; byte b = 20; a+b => byte형이라도 + 연산자를 사용하면 int형 30이 된다
     6)long : 사용바이트 8byte
       입.출력범위 : -2^63~2^63-1(-9,223,372,036,854,775,808~9,223,372,036,854,775,807)
       초기화 할때 l이나 L을 붙혀야 한다.
       예) long lo = 123356L;
    
  - 실수형 자료형
     7)float : 사용바이트 4byte, 입.출력범위 : 1.4E-45 ~ 3.402823E38
               예) float f = 12.34f;
               기본 자료형이 아니므로 초기화 할때 반드시 f나 F를 붙혀줘야 한다.

               0으로 나누었을때 무한대의 값을 표기하는 Infinity라는 예약어를 이용
               0을 0으로 나누었을때 수가 아닌 값을 표현하기 위해 NaN이라는 예약어를 이용
 
     8)double : 사용바이트 8byte, 입.출력범위 : 4.9E-324 ~ 1.8E308
               예) double du = 12345.789;
               실수형 기본 자료형으로 8byte범위를 나타낸다

  - 클래스형 자료형
     9) String : 사용바이트 4byte(레퍼런스형), 입.출력범위 : 무한대
                 예) Sting str="김병철"
                 String의 S는 항상 대문자(클래스이므로)
                 클래스의 자료형은 초기화를 해 줄 필요가 없다(동적할당메모리영역에 저장)
                 클래스변수는 무조건 4byte이며, 문자열을 처리할수 있는 자료형처럼
                 사용할 수 있도록 만들어졌다.

Promosion 과 Casting을 이용한 자료형의 변환
 - 형변환이란 위의 자료형들에 저장된 값을 다른 자료형에 집어 넣는 방식을 말한다.
   - 자동형변환(Promosion) : 큰자료형에 작은 자료형을 넣을 경우
                             에러는 발생하지 않으나, 메모리 공간이 낭비된다.
   - 강제형변환(Casting) : 작은 자료형에 큰 자료형의 값을 대입하는 경우
                           반드시 형변환이 이루어져야만 한다. 안하면 에러발생
   - 기준
     1) 자료형들의 공간 범위를 기준으로 한다.
       - short a=10; char b=a; 라고 하면 오류가 발생
         short형은 -32,768~32,767이고 char은 65,535까지 이므로 음수가 되었을 경우를
         생각해서 casting되어야 한다. char b=(char)a;
         예) byte a=12; char b=a;
             byte a=12; short b=a;
             char a=12; short b=a;
     2) 실수형자료형은 정수형자료형보다 큰 자료형이다
       - 실수는 무조건 정수보다 크다(무조건 외우자)

@@ 강제형변환과 자동형변환의 예를 들며 프로그램 작성등으로 설명
 
**초기화 에러
  long a = 12; 이러면 int 12를 long형 a에 저장하는 자동 형변환이 일어난다.
  l,L을 안붙혀서 나타나는 현상   
  float f = 12.5; 이러면 에러가 난다. double 12.5를 float형 f에 넣을때는 강제형변환을 해줘야한다
  f,F를 안붙혀서 나타나는 현상

'자바' 카테고리의 다른 글

자바의 기본 입출력(9)  (0) 2012.12.11
자바의 연산자(8)  (0) 2012.12.11
자바의 기초적인 개념1(6)  (0) 2012.12.11
eclipse를 사용 자바시작(5)  (0) 2012.12.05
자바를 쉽게 쓰기 위한 툴 다운로드(4)  (0) 2012.12.05
by 맑은소금 2012. 12. 11. 00:17