본문 바로가기

JAVA/혼자공부하는자바

[JAVA] 타입 / 타입변환

728x90

1. 기본타입
    -자바는 정수, 실수, 논리값을 저장할 수 있는 기본타입을 제공, 타입은 총 8가지
    -정수타입 : byte, char, short, int, long
    -실수타입 : float, double
    -논리 타입: boolean

    1) 정수타입
        -byte(1byte/8bit), char(2byte/16bit), short(2byte/16bit), int(4byte/32bit), long(4byte/32bit)
        -기본적으로 컴파일러는 정수리터럴을 int타입으로 간주하는데, int타입의 허용범위을 초과할 경우,
         long타입을 컴파일러 에게 알려줘야하는데 방법은 정수 리터럴 뒤에 소문자l이나 대문자 L을 붙여준다

     2) char 타입 : 하나의 문자를 작은 따옴표로 감싼 것을 문자리터럴 이라고 한다
            -문자리터럴은 유니코드로 변환되어 저장
            -유니코드: 세계각국의 문자를 2byte오 표현할 수 있는 숫자
            -유니코드는 정수이므로 char도 정수타입에 속한다

    3) String타입 :큰따옴표""로 감싼 문자들을 문자열 이라고 부른다
        -문자열을 변수에 저장하고 싶다면 String타입을 사용해야 한다
        -이스케이프 문자( \ )
            \t : 탭만큼 띄움   ,   \n : 줄바꿈  등..

    4) 실수타입
        -소수점이 있는 실수리터럴을 저장할 수 있는 타입은 float 와 double이다
        -자바는 실수리터럴을 기본적으로 double타입으로 해석하기 때문에 실수리터럴을 
         float타입변수에 저장하면 에러발생
        -실수리터럴을 float타입으로 저장하고 싶으면 리터럴 뒤어 f 또는 F를 붙인다

    5) 논리타입
        -참과 거짓을 의미하는 논리리터럴로 true와 false를 사용한다
        -논리리터럴은 1byte 크기의 boolean타입변수에 저장
        

핵심포인트
-정수타입       : 정수를 저장할 수 있는 타입으로 byte, char, short, int, long 타입을 말한다
-char 타입      : 작은따옴표로 감싼 하나의 문자리터럴을 저장할 수 있는 타입을 말한다
-String 타입    : 큰따옴표로 감싼 문자열을 저장할 수 있는 타입을 말한다
-실수타입       : 실수를 저장할 수 있는 타입으로 float 와 double타입을 말한다
-boolean타입    : 참과 거짓을 의미하는 true와 false를 저장할 수 있는 타입을 말한다


2. 타입 변환
    1) 자동타입 변환 (프로그램 실행도중 자동으로 타입변환이 일어나는 것)
        -값의 허용범위가 작은타입이 허용범위가 큰 타입으로 저장될 때 발생 
        -byte < short < int < long < float < double
        -int 타입이 byte타입보다 허용번위가 더 크기 때문에 자동타입변환 발생
        -정수타입이 실수타입으로 저장 될 경우에는 무조건 자동타입변환
        
    2) 강제타입 변환 (casting)
        -큰허용범위 타입을 작은허용범위 타입으로 강제로 '나눠서' 저장하는 것을 강제타입변환
        -캐스팅 연산자 괄호()를 사용하는데, 괄호안에 들어가는 타입은 나누는 단위이다
        -int타입은 byte보다 큰 허용범위를 가지지만, (byte)캐스팅연산자를 사용해서 byte타입으로 강제변환
        -int는 char보다 큰 허용범위 이지만 문자를 출력하기 위해서는 (char) 캐스팅 연산자 사용
        -실수타입은 정수타입으로 강제타입 변환된다. 이 경우 소수점 이하는 버려지고 정수부분만 저장된다

    3) 정수 연산에서의 자동타입 변환
        -정수타입 변수가 산술연산식에서 피연산자로 -사용되면 int타입보다 작은 byte, short타입의 변수는
         int타입으로 자동타입 변환되어 연산을 수행한다
        -정수연산식에서 모든 변수가 int타입으로 변환되는 것은 아니다.
        -두 피연산자 중 허용범위가 큰 타입으로 변환되어 연산수행
         예를 들어 int보다 하용범위가 큰 long이 피연산자로 사용되면 다른 피연산자는 무조건 long으로 변환하고 연산수행
        
    4) 실수 연산에서의 자동타입변한
        -피 연산자 둥 하나는 float와 다른하나가 double 타입이라면 float는 double로 자동타입변환 되어 연산수행된다
        -int타입과 double타입도 먼저 int타입을 double타입으로 자동변환시키고 연산을 수행한다
        -만약 int타입으로 꼭 연산을 해야한다면 (int) 를 사용해 강제변환 시킨후에 연산을 수행한다
        -실수리터럴 연산 : 자바에서 f, F 가 없는 실수는 모두 double이다
        -만약 1을 2로 나누면 0.5가 되는데 이거 코드로 옮기면
         >int x = 1;     int y = 2;     double result = x/y;
         >double result = (double) x/y;
         >double result = x/(double)y;
         >double result = (double)x/(double)y;
        -정수의 결과는 정수가 만약 위에 코드에 double를 안붙였다면 0으로 출력된다
        -0를 double로 저장하면 0.0이다

    5) +연산에서의 문자열 자동 타입변환
        -피연산자 모두 숫자일 경우에는    -> 덧셈연산 수행
        -피연산자 중 하나가 문자열일 경우 -> 나머지 피연산자도 문자열로 자동변환되어 문자열 결합연산 수행
        -연산식에서 +연산자가 나오면 앞에서부터 순차적으로 +연산을 수행
        -먼저 수행된 연산이 결합연산 이라면 이후 +연산은 모두 결합연산이 된다
         ex) string str = 1+"2"+3   -> string str = "12"+3  -> string str = "123"
        -우선 연산하고 싶은 부분이 있다면 해당부분을 괄호()로 감싸준다

    6) 문자열을 기본타입으로 강제타입변환
        -문자열을 정수 및 실수타입으로 변환해서 연산
         : String A = "숫자"  ->  반환타입 B = 반환타입.parse변환타입(A)

        -문자열이 숫자가 아닌 알파벳이나 특수문자, 한글등을 포함하고 숫자타입으로 변환을 시도하면
          "숫자형식예외" 발생 (numberFormatException)

        -기본타입(8개)의 값을 문자열로 변경할 경우 String.valueOf() 메서드 이용
         : String str = String.valueOf(기본타입값);

핵심포인트
-자동타입변환 : 자동으로 타입이 변환되는 것을 말한다. 값의 허용범위가 작은 타입이 허용범위가 큰 타입으로 저장  될 때 발생
-강제타입변환 : 강제로 타입을 변환하는 것을 말한다. 값의 허용범위가 큰 타입을 허용범위가 작은타입으로 쪼개어서 

  저장하는 것을 말한다
-문자열 결합 연산 : 문자열과 + 연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어난다
-Integer.parseInt()   : 문자열을 int타입으로 변환
-Double.parseDouble() : 문자열을 실수 double타입으로 변환

728x90

'JAVA > 혼자공부하는자바' 카테고리의 다른 글

[JAVA] 변수와 입출력_(간략)  (0) 2023.03.19
[JAVA] JAVA 시작  (0) 2023.03.19