변수 (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 부터 시작
- 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'를 붙인다.
- 논리 타입(boolean)
- 상태 값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 주로 사용
- true / false
타입 변환
- 자동(묵시적) 타입 변환
- 프로그램 실행 도중에 자동으로 타입 변환.
- 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생
- 단 하나의 예외로는, char 범위는 0~65535 이므로, 음수가 저장될 수 없기 때문에 음수 byte -> char 은 불가능
- 강제(명시적) 타입 변환 = 캐스팅(Casting)
- 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 방법
- 원래 int 값은 보존되지 않지만, int 값이 끝 1 byte 으로만 표현이 가능하다면, 값은 유지될 수 있다.
- 자동 변환 되지 않는 경우
- int -> char
- 실수(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 |