변수의 타입

2024. 7. 23. 17:35■ JAVA LECTURES/VARIABLE

변수의 타입 목차

 

1. 기본형

1) boolean

2) char
3) byte, short, int, long

4) float, double

 

2. 참조형

1) String

2) Object, Array, List

 

3. 래퍼클래스

boxing & unboxing

 

 

저장공간의 종류 (변수 타입) 

 

변수의 타입을 알기 전에 짚고 넘어가야 하는 것:
저장 공간은 변수와 상수로 나뉘지만 대부분 변수 용도로 쓰이기 때문에 편의상 저장 공간을 변수라고 지칭할것임

 

 

변수 = 저장공간(그릇)에 담을 수 있는 데이터(음식)

 

 

 

 

1. 기본형

 

1. 논리형 변수 =   boolean type

- True/False 값만 저장 

- 왼쪽은 데이터타입: boolean / 이름: flag 의 변수를 선언한다고 말할 수 있고 우측에는 boolean의 값: true 을 할당

 

 

 

2.  문자형 변수 = char

- 'A' 나 '1' 같은 문자 하나만 저장
- 따옴표 하나로 문자 한.개.만 저장 (문자열과 헷갈리지 말기)

 

 

 

 

3. 정수형 변수 = byte, short, int, long ( 왼쪽부터 오른쪽으로 갈수록 큰 순서)

  • byte : -128 ~ 127 범위의 숫자만 저장 가능
  • short (2byte)는 -32,768~32,767 범위의 숫자만 저장 가능
  • int (4byte)는 -21억~21억 범위의 숫자만 저장 가능
  • long (8byte)은 9백경 정도의 매우 큰 수를 저장 가능
byte byteNumber = 127; // byte 는 -128 ~ 127 범위의 숫자만 저장 가능합니다.

short shortNumber = 32767; // short 는 -32,768~32,767 범위의 숫자만 저장 가능합니다.

int intNumber = 2147483647; // int 는 -21억~21억 범위의 숫자만 저장 가능합니다.

long longNumber = 2147483647L; // long 은 숫자뒤에 알파벳 L 을 붙여서 표기하며 매우 큰수를 저장 가능합니다.

 

 

 

 

4. 실수형 변수 = float, double

  • float (4byte) : 3.4 * -10^38 ~ 3.4 * 10^38 (long 보다 큼) 범위의 숫자 저장이 가능
  • double (8byte) : 1.7 * -10^308 ~ 1.7 * 10^308 (long 보다 큼) 범위의 숫자 저장이 가능

 

float floatNumber = 0.123f; // float 는 4byte 로 3.4 * 10^38 범위를 표현하는 실수값
double doubleNumber = 0.123123123; // double 은 8byte 로 1.7 * 10^308 범위를 표현하는 실수값

 

 

강의 1-5 16분부터 다시 보기

 

 

 


 

 

2. 참조형

 

한번에 저장하기 어렵고 어딘가에 별도로 저장하고 이 주소값을 참조하는 식으로 저장

어느 공간에 있는 주소값을 바라보고 있는 변수라고도 말할 수 있음 (조금 복잡함, 길이를 예측하기 힘듬)

 

1. 문자열 변수 =  String

 

2. 그 외 
1) Object

2) Array
3) List

 

 

 

3. 래퍼 클래스 변수 

래퍼 클래스(Wrapper Class)라는 말 그대로 “기본형 변수를 클래스로 한번 랩핑(감싸는) 변수”라고 생각하면 됨

 

  • 기본형 변수 타입명에서 첫 글자를 대문자로 바꾸어서 래퍼 클래스를 정의함
  • 박싱 VS 언박싱
    - 기본 타입에서 래퍼 클래스 변수로 변수를 감싸는 것을 “박싱”이라고 부르고
    - 래퍼 클래스 변수를 기본 타입 변수로 가져오는 것을 “언박싱”이라고 부름
// 박싱
int number = 21;  // Integer 래퍼 클래스 num 에 21 의 값을 저장
Integer num = new Integet(number); //요즘은 바뀌어서 Integer num = number; 이렇게 씀

// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 inValue() 같은 언박싱 메서드들을 제공

 

 

연습해보기

1. 기본형

2. 참조형

3. 래퍼클래스

 

 

1. 기본형
1) 논리형: boolean 이름 = true 또는 false;

public class Main {
    public static void main(String[] args) {
		boolean flag = true; //변수선언 한번에 쓰는 방법: 타입 이름 = 값;
        System.out.println(flag);
    }
}

 

public class Main {
    public static void main(String[] args) {
    boolean flag;
    //flag = true; //변수선언 먼저하고 밑에 값을 따로 할당하는 방법: 특별한 경우 이렇게 두줄로 쓰지 않음
    
    System.out.println(flag);
    }
}
public class Main {
    public static void main(String[] args) {
    final boolean flag = true; //상수선언 하는 방법
    //flag = false; // 이렇게 위에처럼 상수선언하면 변수가 아니기에 값을 바꿀 수 없음
    System.out.println(flag);
    }
}

 

 

 

 

1. 기본형
2) 문자형: char 이름 = '값';

public class Main {
    public static void main(String[] args) {
        char alphabet = 'A'; //쌍따옴표 하면 문자열로 인식하니 한개만
        System.out.println(alphabet);
    }
}

 

 

 

 

 

 

1. 기본형
3) 정수형 byte, short, int, long

public class Main {
    public static void main(String[] args) {

        byte byteNumber = 127; // -128~127 (1byte만 표현할 수 있기 때문에) 
        short shortNumber = 32767; -327767~32767 
        int intNumber = 2147483647; -2147483647~2147483647 
        long longNumber = 2147483647L;

        System.out.println(byteNumber);
        System.out.println(shortNumber);
        System.out.println(intNumber);
        System.out.println(longNumber);
    }
}

// 대문자 N을 중간에 쓰는것을 어떤 변수나 메서드 이름을 만들 때 이런식으로 표현하는 것을 camel case 라고 말함

// 
1byte = 8bit
bit = 0,1 형태의 2진수 데이터로써 컴퓨터가 저장(표현)할 수 있는 최소단위
bit만 사용하면 너무 비효율적이라 byte를 만들게 됨

byte 는 -128부터 127 그리고 0포함하면 총 256개 = 2의 8제곱 만큼의 표현을 할 수 있다는 의미 //

 

 

1. 기본형
4) 실수형 float(4byte), double(8byte)

public class Main {
    public static void main(String[] args) {
        float floatNumber = 0.123F;
        double doubleNumber = 0.123123132;
        System.out.println(floatNumber);
        System.out.println(doubleNumber);
    }
}

// 이런식으로 변수를 뒤에서 쓸 수 (참조) 할 수 있음

 

 

2. 참조형
1) 문자열 String

public class Main {
    public static void main(String[] args) {
        String helloWorld = "Hello World"; //참조형 변수쓰는 방법
        System.out.println(helloWorld); // 변수를 이렇게 괄호에 가져와서 쓰는 것

    }
}

// 직접 문자열을 치지말고 변수에 담아서 해보기/ 원래는 아래처럼 hello world를 표현했음
// public class Main {
//    public static void main(String[] args) {
//        System.out.println("Hello world!");
//    }
//}

 

 

 

2. 참조형
2) 배열 

참조형 데이터는 주소값이 출력되기 때문에 아래처럼 작성하면 콘솔창의 값처럼 나옴

 

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3}; // a는 1과 2와 3의 배열을 갖고 있다는 뜻
        System.out.println(Arrays.toString(a));

    }
}

// 배열이라는 것은 어떤 일련의 데이터 타입을 열로서 선언해 놓은 방식을 말함
// 기본형은 int a = 3; 이렇게 작성

// 참조형 데이터는 주소값이 출력한다는 것을 잊지마!!!

 

 

 

 

3. 래퍼클래스 

public class Main {
    public static void main(String[] args) {
        int number = 21; // 값 저장
        Integer num = number; //박싱
        System.out.println(num.intValue()); //언박싱 
    }
}

// ***래퍼클래스 변수로 감싸주는 방법
// 먼저 Integer 래퍼 클래스 num 에 21의 값을 저장
// Integer = 클래스명
// num = 변수
// new = 래퍼클래스
// Integer = 클래스명 적고
// 괄호안에() 기본형인 number을 넣어주어
// Integer num = new Integer(number) 이렇게 new 키워드를 이용해서 integer를 감싸는
// 방법을 썼었지만 지금은 이게 옛날방식이라고 말하여 래핑하지 않아도 할당하는 방식으로
// Integer num = number; 이렇게만 쓰면 되는 것으로 바뀌었음





자료

최원장님의 자바 문법 강의

'■ JAVA LECTURES > VARIABLE' 카테고리의 다른 글

아스키(ascii)코드란?  (5) 2024.07.24
변수를 만드는 방법  (1) 2024.07.23