1. 타입(Type)

  • 타입은 데이터 값의 특성을 표시해 주는 역활을 한다
  • 값이 차지하는 메모리의 크기와 저장되는 방식을 결정한다

 

2. 타입의 분류

 1) 기본 타입(primitive type)

  •  'OO은 OO이다' 와 같이 직접적으로 표현하는 데이터이다
  • 데이터의 실제 값을 의미하며 4가지 타입으로 구분된다
    - 정수 타입 : byte, short, int, long
    - 실수 타입 : float, double
    - 문자 타입 : char
    - 논리 타입 : Boolean

 2) 참조 타입(reference type)

  • 데이터가 저장된 주소값을 의미한다
  • 객체의 주소를 저장한다
    - 참조타입변수 = 객체;
  • 8개의 기본타입을 제외한 나머지를 참조 타입이라 한다
  • ‘OO은 OO에서 찾을 수 있다’처럼 간접적으로 표현하는 데이터이다
class Example {
	public static void main(String[] args) {
    Object object = new Object();       //Object 객체를 참조변수 object에 저장한다
    System.out.pringln(object);         //참조변수 object가 저장하고 있는 값을 출력한다
    }
}
  • 상기 예제를 실행하면 다음과 같은 결과가 출력된다

  • System.out.println(object); 의 결과로 Object 객체에 대한 주소값을 출력한다
  • 저장하려는 객체의 위치, 주소값을 저장하는 변수를 참조타입 변수 라고 한다 

 

3. 정수 타입(byte, short, int, long)

 : 숫자 데이터를 의미하며 크기별로 타입을 지정해 준다

 

 1) 정수 타입의 종류

타입 메모리 범위 기타
byte 1byte -128(-27) ~ 127(27- 1) 메모리 Cell의 기본단위
short 2byte -32,768(-215) ~ 32,767(215- 1) byte 보다 길고 int(4byte)보다 짧다
int 4byte -2,147,483,648(-231)
~ 2,147,483,647(231- 1)
int는 정수(Integer)의 약자이다
long 8byte -9,223,372,036,854,775,808(-263)
~ 9,223,372,036,854,775,807(263- 1)
- int(4byte)보다 길다
- long 타입 변수에 값을 할당할 때 4byte의 데이터가 아니라 8byte의 데이터 값이라는 것을 컴파일러에 알려주기 위해 끝에 'L'을 붙인다

※ byte= 컴퓨터가 처리하는 정보의 기본 단위

   1byte = 8bit = 하나의 문자를 나타내는 가장 작은 단위
   1bit = 0 또는 1을 저장하는 최소 단위

 

 2) 정수 타입의 특성

  • int는 정수형의 기본타입이다
  • 정수를 입력하면 기본적으로 int 로 인식한다

ex1) byte 타입 변수 a에 값 120을 할당하면, byte 범위 내에 있으므로 컴파일러가 byte로 바꿔서 전달한다

      byte 타입 변수 a1에 값 128을 할당하면, byte 범위 밖에 있으므로 컴파일러에서 오류가 발생한다

public class Main {
    public static void main(String[] args){
        Object object =new Object();
        byte a = 120; //정상 실행
        System.out.println(a);
        byte a1 = 128; //byte 127의 범위를 벗어남으로 오류 발생
        System.out.println(a1);
    }
}

/*java: incompatible types: possible lossy conversion from int to byte 에러 코드 발생
  (     호환이 안되는 유형: byte에서 int로 전환 가능하다               ) */

ex2) int 타입 변수 a에 값 120을 할당하면, int 범위 내에 있으므로 컴파일러가 byte로 바꿔서 전달한다

      int 타입 변수 a1에 값 2147483648을 할당하면, int 범위 밖에 있으므로 컴파일러에서 오류가 발생한다

public class Main {
    public static void main(String[] args){
        Object object =new Object();
        int a = 120;
        System.out.println(a);
        int a1 = 2147483648;
        System.out.println(a1);
    }
}

/*java: integer number too large 에러발생
        (정수가 너무 크다       )*/
  • long 타입은 입력값 마지막에 'L'을 붙여준다
  • 변수의 값이 자료형의 범위를 넘을 경우 오버플로우(overflow) 또는 언더플로우(underflow)가 발생하기 때문에 필요에 따라 long과 같은 타입을 사용

ex3)  long 타입 변수 a1에 값 2147483648+'l' 또는 2147483648+'L' 을 할당하면, long 범위 내에 있으므로 컴파일러가 byte로 바꿔서 전달한다

public class Main {
    public static void main(String[] args){
        Object object =new Object();
        int a = 2147483647;
        System.out.println(a);
        long a1 = 2147483648l;
        //마지막에 'l'을 붙이지 않으면 java: integer number too large 에러 발생
        System.out.println(a1);
        long a2 = 2147483648L;
        //마지막에 'l'을 붙여도 에러는 발생하지 않지만 'L'을 사용하여 준자
        System.out.println(a2);
    }
}

 

 3) 오버플로우(Overflow)

  • 자료형이 표현할 수 있는 범위 이상의 값을 표현한 경우 발생하는 현상
  • 어떤 값이 byte형이고, byte형의 최댓값인 127을 값으로 가지는 경우, 이 값에 1을 더하면 128이 아니라 -128이 됩니다.

 

 4) 언더플로우(Underflow)

  • 자료형이 표현할 수 있는 범위 이하의 값을 표현한 경우 발생하는 현상
  • 어떤 값이 byte형이고, byte 형의 최솟값인 -128을 값으로 가지는 경우, 이 값에 1을 빼면 -129가 아니라 127이 됩니다.
 

4. 실수 타입(float, double)

: 실수는 소숫점을 가지고 있는 값을 말한다

float double
4byte = 32bit
소숫점 포함 9자리까지 표시
8byte = 64bit
소숫점 포함 18자리까지 표시
32비트 IEEE 754 부동 소수점 64비트 IEEE 754 부동 소수점
접미사 'f'를 사용 접미사 'd' 또는 'D'를 사용
  • 정수가 아닌 소수점 단위의 값을 데이터로 가져올 때 사용한다
  • 실수 타입의 값은 두가지 유형 모두 정확하지 않다
public class Grade {
    public static void main(String[] args) {
        float f1 = 12345.123456789012345678901234567890f;
        double d1 =12345.123456789012345678901234567890;

        System.out.println("float f1 : " + f1);
        System.out.println("double d1 : " + d1);
    }
}




result
float f1 : 12345.123
double d1 : 12345.123456789011
 

5.  논리 타입(boolean)

 : 참(true) 또는 거짓(false)를 저장할 수 있는 타입이다

  • 값으로 true 와 false를 가진다
  • 컴퓨터 언어로 0과 1로 저장하며 1bit로 표현된다
  • JVM이 다루는 최소 단위가 1byte이므로 1byte의 크기를 차지한다
  • 조건이 참 또는 거짓일 경우 사용한다
public class Grade {
    public static void main(String[] args) {
        boolean Rain = true;
        if (Rain == false) {
                System.out.println("우산을 들고 나간다");
            }
        else {
                System.out.println("우산을 놓고 나간다");
            }
        System.out.println(Rain);
        }
    }
    
    
    
    
result
우산을 놓고 나간다
true

 

6. 문자 타입(char)

 : 단 하나의 문자만 저장하는 타입

  • 여러 문자를 저장하기 위해서는 문자열(String)를 사용한다
  • 문자와 문자열은 전혀 다른 타입이다
  • 자바는 유니코드에 바탕을 두고 문자를 표현한다
  • cahr 변수 값에 숫자를 할당하여 보면 각기 다른 문자가 출력되는 것을 볼 수 있다
public class Grade {
    public static void main(String[] args) {
        char a=1;
        char a1=12;
        char a2=123;
        char a3=1234;
        char a4=12345;

        System.out.println(a);
        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(a4);

    }
}



result


{
Ӓ
〹

 

7. 타입 변환

 1) 자동 변환

  • 바이트 크기가 작은 타입에서 큰 타입으로 변환된다
  • 덜 정밀한 타입에서 더 정밀한 타입으로 변환된다
더보기
byte(1byte) < short(2byte) < char(2yte) < int(4byte) < long(8byte) < float(4byte) < double(8byte)
더보기
같은 크기의 byte 중에서도 더 정밀한 타입으로 변환된다
long longValue = 12345L;
float floatValue = longValue;
// float이 long보다 정밀하므로, 자동으로 타입이 변환된다

System.out.println(floatValue); 
// 12345.0이 출력된다

 

 2) 수동 변환

  • 메모리 용량이 큰 타입에서 작은 타입으로 변환은 자동변환이 되지 않는다
  • 큰 데이터 타입을 작은 데이터 타입의 변수에 저장하는 것을 캐스팅(casting)이라고 한다
  • 캐스팅 연산자 ( )를 사용하며, 연산자 안에 변환하고자 하는 타입을 작성해 준다
int intValue = 128;
byte byteValue = (byte)intValue;
//int 타입으로 선언된 변수 intValue를 더 작은 단위인 byte로 변환

System.out.println(byteValue);
//출력값은 byte의 최대 표현 값인 127이 아니라 -128이다
//표현 범위를 넘으면 한 바퀴를 돌아 음수로 출력하기 때문이다

 

 

※ 참조

https://stackoverflow.com/questions/5071040/java-convert-integer-to-string

 

Java - Convert integer to string

Given a number: int number = 1234; Which would be the "best" way to convert this to a string: String stringNumber = "1234"; I have tried searching (googling) for an answer but no many seemed "

stackoverflow.com

https://www.delftstack.com/ko/howto/java/how-to-convert-a-string-to-an-int-in-java/

 

Java에서 문자열을 int로 변환하는 방법

이 기사에서는 Java에서 String을 int로 변환하는 방법을 소개합니다.

www.delftstack.com

 

'JAVA' 카테고리의 다른 글

Java - 배열(array)  (0) 2022.05.22
Java - 변수(variable)  (0) 2022.05.22
Java - 개요3. 파일 생성  (0) 2022.05.19
Java - 개요2. JVM & JDK  (0) 2022.05.18
Java - 개요1. 정의  (0) 2022.05.18

+ Recent posts