반응형

변수


변수란?

- 특정 타입의 데이터를 메모리상에 담을 수 있는 영역을 의미한다.

 

 

  변수를 선언하는 방식

  데이터 타입 변수이름 ;

  ex) int num;

  ex) String name;

 

  위와 같은 변수명에 데이터를 정해주는 방법

  변수이름 = 데이터 값;

  ex) num = 10;

  ex) name = 홍길동;

  변수이름 = 데이터 값;

  ex) num = 10;

  ex) name = 홍길동;

 

  2줄로 입력하지 않고 1줄로 데이터를 주는 방법

  데이터 타입 변수이름 = 데이터 값;

  ex) int num = 10;

  ex) String name = 홍길동;

 


데이터 타입


컴퓨터도 10인 영역에 2만 사용하면 영역을 낭비하는 일이 발생한다.

그 영역 낭비를 방지하고 효율적으로 사용하기 위해서 데이터 타입이 나뉘어진다.

기본형 데이터 타입

정수형

byte 8비트(1byte) 범위 :  ( -128 ~ 127 )
short 16비트(2byte) 범위 : ( -32768 ~ 32767 )
int 32비트(4byte)
long 64비트(8byte)
// 1byte = 8bit
        byte var1;
        var1 = 127;
 
        System.out.println(Byte.MAX_VALUE);    // 127 출력
        System.out.println(Byte.MIN_VALUE);    // -128 출력
        
        short var2 = 20;                     // short 2byte 정수 기억 -32768 ~ 32767
//      short var22 = 222222;                // short 범위를 벗어나기 때문에
        System.out.println("var2 : " + var2);
        
        int var3 = 2147483647;        // int 4byte 정수 기억 -2147483648 ~ 2147483647
//      int var33 = 21474836477;    // int 범위를 벗어나기 떄문에 컴파일 오류
        System.out.println("var3 : " + var3);
        
        
        long var4 = 8999999999999999999L;
        System.out.println(Long.MAX_VALUE); // long형의 최대값이 출력
        System.out.println("var4 : " + var4);  // var4에 89999999999를 준 값 출력

여기서 각 타입의 최대값과 최소값을 보고 싶다면

데이터 타잊 최소값 최대값
byte Byte.MIN_VALUE Byte.MAX_VALUE
short Short.Min_VALUE Short.MAX_VALUE
int Integer.MIN_VALUE Integer.MAX_VALUE
long Long.MIN_VALUE Long.MAN_VALUE

형변환

        //promotion : 자동 형변환(작은기억장소 -> 큰 기억장소)
        //cast : 강제 형변환(큰기억장소 -> 작은기억장소)
        byte b1 = (byte)128;
        System.out.println("b1 : " + b1);
        
        int b2 = 10;
        byte b3 = (byte)b2; // cast : 강제 형변환
        // 변수 형태만 본거기 때문에 int가 들어가면 byte보다 큰값도 있으므로
        // 실제 값은 byte형을 충족하여도 오류가 뜬다
        // int형으로 충족시키고 싶다면 (byte)b2 를 기입하여야함
        System.out.println("b3 : " + b3);
        
        short s1 = 10;
        int i1 = s1; // promotion : 자동 형변환
        System.out.println("i1 : " + i1);

실수형

float 32비트(4byte)
double 64비트(8byte)
double d1 = 10.5;
       d1 = 5// 실수형의 저장장소가 정수형 저장장소의 크기보다 크다
        System.out.println("d1 : " + d1); // 5.0 출력
        
float f1 = (float)4.5// 또는
        float f11 = 4.5F;      // 로 입력해주어야한다.
        f1 = 5.1F;               // 왜냐하면 (float)또는 F를 생략하면 double로 읽기때문이다.
        System.out.println("f1 : " + f1); // 5.1 출력

실수형도 정수형과 마찬가지로 최소값과 최대값을 보고싶다면

데이터 타입 최소값 최대값
float Float.MIN_VALUE Float.MAX_VALUE
double Double.MIN_VALUE Double.MAX_VALUE

 

Boolean형

Boolean true 또는 false 출력
        boolean bu = true// true 또는 false
        boolean bu1 = false;
        System.out.println("bu : " + bu); // true 출력
        System.out.println("bu1 : " + bu1); // false 출력

 

char 형

char 16비트, 유니코드(0~65535) 출력
        char c1= 'a';
        char c11 = 'A';
        
        System.out.println("c1 : " + c1); // a 출력
        System.out.println("c11 : " + c11); // A 출력
        System.out.println((int)c1); // 97 출력
        System.out.println((char)97); // a 출력

(int)c1이 왜 97일까 ? (char)97이 왜 a 일까?

https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C

 

아스키 코드 - 나무위키

UTF-8의 경우 ASCII 영역은 그대로 1바이트를 사용하기 때문에 호환이 된다. 반대로 말하자면 UTF-8 문서라도 ASCII 영역에 해당하는 문자만 적혀 있고 BOM까지 없다면 그냥 ASCII 문서와 다를 게 없다. 하지만 UTF-16은 2바이트에서 시작하기 때문에 서로 호환이 되지 않는다. 이 때문에 UTF-16에서 ASCII 문자를 나타낼 때는 앞에 0x00이 붙는다. 예를 들어 A라는 글자를 표현하려면, ASCII나 UTF-8에서는 0x41이라

namu.wiki

해당 글을 참고하면 도움이 될 것 같다. 아스키 코드를 활용해서 hex 16진수와 octal 8진수 값도 한번 출력해보았다.

        // hex 16진수
        System.out.println(0xa); // 10 출력 
        System.out.println(0xf); // 15 출력
        // octal 8진수
        System.out.println(05); // 5 출력
        System.out.println(011); // 9 출력

위 나무위키 링크에 있는 값과 예시 출력 값을 비교하면 같은 것을 알 수 있다.

 

참조형데이터타입

기본형 데이터 타입을 제외한 데이터 타입

        String irum = "홍길동";
        // 어딘가의 주소해 홍길동이라는 이름이 있고 그것을  irum이 참조하는 것
        System.out.println(irum);

 

반응형

'JAVA > JAVA' 카테고리의 다른 글

6 - 클래스 ( class )  (0) 2020.03.03
5 - 배열(Arrary)  (0) 2020.03.03
4 - 조건문 if & switch  (0) 2020.03.03
3 - 반복문 for & while  (0) 2020.03.03
2 - 연산자  (0) 2020.03.03

+ Recent posts