변수란?
값을 저장할 수 있는 메모리 공간
변수란 이름은 > 프로그램에 의해서 수시로 값이 변동될 수 있기 때문이다.
복수 개의 값을 저장할 수 없고, 하나의 값만 저장할 수 있다.
따라서, 하나의 값을 저장할 수 있는 메모리 공간을 의미한다.
변수 선언 방법
// 타입 변수이름
int age;
double value;
// 같은 타입에서 여러개 변수 선언 방법
int x,y,z;
// 변수 값 저장
int score = 90;
예약어는 변수 이름을 지정할 수 없다.
| 분류 | 예약어 |
| 기본 데이터 타입 | boolean, byte, char, short, int, long, float, double |
| 접근 지정자 | private, protected,public |
| 클래스 | class, abstract, interface, extends, implement, enum |
| 객체 | new, instanceof, this,super, null |
| 메소드 | void, return |
| 제어문 | if, else, switch, case, default, for, while, break,continue |
| 논리값 | true, false |
| 예외처리 | try, catch, finally, throw,throws |
| 기타 | transient, volatile, package, import, synchronized,native,final |
정수 리터럴
10진수 : 0,75,100
8진수 : 02,-04
16진수 : 0x4 0xB3
실수 리터럴
소수점이 있는 리터럴은 10진수 실수 : 0.25, -1.3
대문자 E 또는 소문자 e가 있는 실수 리터럴
5E7 : 5 x 10^7
0.12E-5 : 0.12 x 10^-5
★ 변수는 메소드 블록 내 어디에서든 선언할 수 있지만, 변수 사용은 제한이 따른다. 기본적으로 변수는 선언된 블록 내에서만 사용이 가능하다.
변수 사용 범위
public class VariableExample{
public static void main(String[] args){
int v1 = 10;
if(v1>5){
int v2 = v1-5;
}
int v3 = v1+v2+5;
// v2는 if문 안에 있는 변수이므로 사용할 수 없어 컴파일 에러 발생
}
}
기본(원시: primitive) 타입
정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다.
타입에 따라 저장할 수 있는 값의 종류와 범위가 달라진다.
| 값의 종류 | 기본 타입 | 메모리 사용 크기 | |
| 정수 | byte | 1 byte | 8 bit |
| char | 2 byte | 16 bit | |
| short | 2 byte | 16 bit | |
| int | 4 byte | 32 bit | |
| long | 8 byte | 64 bit | |
| 실수 | float | 4 byte | 32 bit |
| double | 8 byte | 64 bit | |
| 논리 | boolean | 1 byte | 8 bit |
> double는 높은 정밀도를 가진다. -> 높은 정밀도는 범위가 더 크기 때문이다.
** 타입 변환
제목 귿로 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다.
자동(묵시적) 타입 변환, 강제(명시적) 타입 변환이 있다.
1. 자동(묵시적) 타입 변환 - promotion
프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것
작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
☞ float가 int와 long보다 더 큰 타입으로 표시된 이유는 표현할 수 있는 값의 범위가 float가 더 크기 때문이다.
2. 강제(명시적) 타입 변환
큰 크기의 타입은 작은 크기의 타입으로 자동 타입 변환을 할 수 없다.
예를 들자면 4byte인 int타입을 1byte인 byte타입에 다믕ㄹ 수 없다. -> 큰 그릇의 물을 작은 그릇 안에 모두 넣을 수 없는 것을 의미
캐스팅(Casting) : 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것
작은 크기 타입 = (작은 크기 타입) 큰 크기 타입
* 연산식에서의 자동 타입 변환
연산?
기본적으로 같은 타입의 피연산자 간에만 수행되기 때문에 서로 다른 타입의 피연산자가 있을 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행한다.
// int 타입과 double 타입 연산
int intValue = 10;
double doubleValue = 5.5;
double result = intValue + doubleValue;
// intValue가 double 값으로 변환하여 연산
// 따라서 result = 15.5 값이 저장된다.
여기서 int 타입을 꼭 연산해야 할 경우에는? double 타입을 int 타입으로 강제 변환하고 연산 수행
int intValue = 10;
double doubleValue = 5.5;
int result = intValue + (int)doubleValue;
// double 타입을 int형으로 강제 타입 변환을 하여 연산을 한다.
// double타입이 int타입으로 연산되었기 때문에 result는 15가 저장된다.
char ch = 'A';
int result = ch + 1; // 'A' 유니코드보다 1이 큰 유니코드가 저장
char na = (char)result // 'B'가 저장된다.'BACKEND > JAVA' 카테고리의 다른 글
| [이것이 자바다] 7장 상속 (0) | 2024.01.22 |
|---|---|
| [이것이 자바다] 6장 클래스 (0) | 2024.01.19 |
| [이것이 자바다] 5장 참조 타입 (0) | 2024.01.19 |
| [이것이 자바다] 3장 연산자 (0) | 2024.01.18 |
| [이것이 자바다] 1장 자바 시작하기 (0) | 2024.01.18 |