변수 (Variable)
  • 값을 저장할 수 있는 메모리의 공간
  • 프로그램에 의해서 수시로 값이 변동될 수 있다.
  • 하나의 타입, 하나의 값만 저장이 가능하다.

 

변수명 작성 규칙
  • 첫 번째 글자는 문자이거나 '&', '_' 이어야 한다. 숫자 불가능
  • 영어 대소문자 구분
  • 첫 문자는 영어 소문자로 시작, 다른 단어가 붙을 경우 첫 문자를 대문자로
  • 문자 수 길이의 제한 X
  • 예약어 사용 불가능

 

예약어 

[자바의 예약어] 

 

리터럴 (literal)
  • 소스 코드 내에서 직접 입력된 값을 리터럴 이라고 부른다.
  • 정수 리터럴, 실수 리터럴, 문자 리터럴, 논리 리터럴

 

정수 리터럴 - byte, char, short, int, long
  • 10진수 : 소수점이 없는 정수 리터럴 
    • 0, 75, -100
  • 8진수 : 0으로 시작되는 리터럴 
    • 02, -04
  • 16진수 : 0x 또는 0X로 시작하고 0~9 숫자나 A~F 또는 a~f로 구성된 리터럴
    • 0x5, 0xA, 0xB3, 0xAC08

 

실수 리터럴 - float, double
  • 10진수 : 소수점이 있는 리터럴
    • 0.25, -3.14
  • 10진수 지수와 가수 : 대문자 E 또는 소문자 e 가 있는 리터럴 
    • 5E7(5x10^7), 0.12E-5(0.12x10^-5)

 

문자 리터럴 - char
  • 작은 따옴표(')로 묶은 텍스트를 하나의 문자 리터럴로 간주한다.
    • 'A', '한', '\t', '\n'

 

문자열 리터럴 - String
  • 큰 따옴표(")로 묶은 텍스트는 문자열 리터럴로 간주한다.
    • "대한민국", "탭 만큼 이동 \t 합니다."

 

논리 리터럴 - boolean
  • true / false

 

이스케이프 문자 
  • 이스케이프(escape) : 역슬래쉬( \ ) 가 붙은 문자 리터럴

[이스케이프 문자 종류]

 

변수의 사용 범위
  • 로컬 변수(local variable) : 메소드 블록 내에서 선언된 변수. 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.
  • 변수는 선언된 블록 내에서만 사용 가능
  • 메소드 블록 첫머리에 선언 권장

 

데이터 타입
  • 기본 타입(primitive) : 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입
  • 비트(bit) : 최소 기억 단위
    • 8 bit = 1 byte

[데이터 기본 타입의 메모리의 크기와 저장되는 값의 범위]

 

  • 정수 타입(byte, char, short, int, long) 
    • 자바의 기본 정수 연산 Int
    • byte와 short는 범위를 초과할 수 있는 위험이 있다.
    • 최소값과 최대값을 넘으면 최소값부터 다시 시작한다. 
      • ex) byte ~128에서 127일 경우, -128 부터 시작

[byte(var1), int(var2) 타입 예시]

 

  • char 타입
    • 자바는 모든 문자를 유니코드(Unicode)로 처리한다.
    • char 타입 변수를 int 타입에 저장하면 유니코드를 알 수 있다.
    • char c = ''; 컴파일 에러 -> char c = ' ';
    • String str = ""; 은 가능하다.
public class unicode {
    public static void main(String[] args){
        char c1 = 'A';      // 문자 직접 저장 -> A
        char c2 = 65;       // 10진수로 저장 -> A
        char c3 = '\u0041';     // 16진수로 저장 -> A

        char c4 = '가';      // 문자 직접 저장 -> 가 
        char c5 = 44032;        // 10진수로 저장 -> 가
        char c6 = '\uac00';     // 16진수로 저장 -> 가

        int uniCode = c1; 
        // 유니코드 얻기 -> 65
        // char 타입 변수를 int 타입 변수에 저장한다.

        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        System.out.println(c6);
        System.out.println(uniCode);
    }
}

 

  • short 타입 
    • C 언어와의 호환을 위해 사용되며, 비교적 자바에서는 잘 사용되지 않는다.
  • int 타입 
    • byte, short 타입과 성능 차이는 거의 없기 때문에, 메모리가 크게 부족하지 않은 경우 int 타입을 사용한다.
    • 8진수 : '0' 
    • 16진수 : '0x'
    • 변수에 어떤 진수로 입력을 해도 2진수로 변환되어 저장된다.
  • long 타입 
    • 변수를 초기화할 때에는 정수값 뒤에 소문자 'l'이나 대문자 'L'을 붙일 수 있다.
    • 컴파일러에게 4byte가 아닌 8byte 정수 데이터를 알려주기 위한 목적
public class LongExample {
    public static void main(String[] args){
        long var1 = 10;
        long var2 = 20L;
        // long var3 = 10000000000000; 컴파일 에러
        long var4 = 10000000000000L;

        System.out.println(var1);
        System.out.println(var2);
        System.out.println(var4);
    }
}

 

  • 실수 타입(float, double)
    • 정수와 다르게 부동 소수점(floating-point) 방식으로 저장
    • 가수와 지수를 저장하기 위해 전체 bit를 나누어 사용
    • 가수 : 0 <= m < 1
    • 자바는 실수 리터럴의 기본 타입을 dobule으로 간주
    • float 타입으로 저장하려면 소문자 'f'나 대문자 'F'를 붙인다.

[부동 소수점 방식]
[실수형 타입의 bit 사용 방법]

 

  • 논리 타입(boolean)
    • 상태 값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 주로 사용
    • true / false

 

타입 변환
  • 자동(묵시적) 타입 변환
    • 프로그램 실행 도중에 자동으로 타입 변환.
    • 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생
    • 단 하나의 예외로는, char 범위는 0~65535 이므로, 음수가 저장될 수 없기 때문에 음수 byte -> char 은 불가능
  • 강제(명시적) 타입 변환 = 캐스팅(Casting)
    • 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 방법
    • 원래 int 값은 보존되지 않지만, int 값이 끝 1 byte 으로만 표현이 가능하다면, 값은 유지될 수 있다.
    • 자동 변환 되지 않는 경우
      1. int -> char 
      2. 실수(float, double) -> 정수(byte, short, int, long) : 소수점은 버려지고, 정수 부분만 저장
int intValue = 1030299770;
byte byteValue = (byte) intValue; // 강제 타입 변환(캐스팅)

[기본 타입 별 최대값, 최소값 상수]

 

  • 서로 다른 타입의 피연산자의 계산은 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.

'프로그래밍 > JAVA' 카테고리의 다른 글

Ch06. 클래스  (0) 2022.01.02
Ch05. 참조 타입  (0) 2022.01.01
Ch04. 조건문과 반복문  (0) 2022.01.01
Ch03. 연산자  (0) 2022.01.01
Ch01. 자바 시작하기  (0) 2022.01.01

+ Recent posts