변수란 무엇인가?
- 변수란 값을 저장할 수 있는 메모리 공간으로 프로그램은 변수를 통해 메모리 공간에 값을 저장하고 읽을 수 있다.
변수 선언
- 변수에 어떤 타입의 데이터를 저장할지 그리고 변수 이름이 무엇인지 결정하는 것
int age; //변수 선언
age = 26; //age 변수에 값 저장
- 변수는 변수 선언이 아닌 최초의 값이 저장될 때 변수가 생성된다.(초기화)
- 변수 사용 범위 : 변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지만 사용이 가능하고 밖에서는 사용할 수 없다.
변수 선언 시 사용되는 기본(primitive) 자료형 데이터타입
타입 | 타입 | 메모리 할당 크기 | 저장되는 값의 허용 범위 |
byte | 정수형 | 1byte | -128 ~ 127 |
short | 정수형 | 2byte | -32,768 ~ 32,767 |
char | 문자형 | 2byte | 0 ~ 65535 (유니코드) |
int | 정수형 | 4byte | -2,147,483,648 ~ 2,147,483,647 |
long | 정수형 | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | 실수형 | 4byte | (소수점) 7자리 이하 |
double | 실수형 | 8byte | (소수점) 15자리 이하 |
boolean | 논리형 | 1byte | true & false |
변수의 명명규칙
- 영어 대소문자가 구분되며 길이 제한이 없다.
- 예약어를 사용하면 안된다.
- 숫자로 시작하면 안된다.
- 특수문자는 '_' 와 '$'만 사용 가능하다.
- 여러 단어를 섞어서 이름을 만들 때 두번째 단어부터 첫글자는 대문자로 한다. ex)userName
- 이름 사이에 공백문자를 포함할 수 없다.
자동형변환(프로모션)
- 자동형변환이란 말 그대로 자동으로 타입 변환이 일어나는 것을 의미하며, 자동형변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생한다.
작은 허용 범위 타입 = 큰 허용 범위 타입
byte < short/char < int < long < float < double
package testt;
import java.util.Scanner;
public class blogTest {
public static void main(String[] args) {
byte byteValue = 10;
int intValue = byteValue;
//컴파일시 자동 타입 변환이 되어 byte형 변수가 int형으로 변환되어 대입된다.
//따라서 int변수가 아닌 다른 타입변수를 대입했는데도 오류가 나지 않음.
System.out.println(intValue);
long longValue = 25;
//25는 int타입. 25가 long타입으로 자동 변환되어 long타입으로 저장된다.
System.out.println(longValue);
double doubleValue = 3.14 * 100;
//실수 연산을 하기 위해 100이 100.0으로 자동형변환되어 계산 된다.
//다른 피연산자 3.14가 실수이기 때문에
System.out.println(doubleValue);
}
}
강제형변환(캐스팅)
- 강제형변환이란 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 저장하는 것을 말한다.
- 개발자가 필요하여 강제로 타입 변환을 지시한다. (()안에 변환할 타입 지정)
- 강제 변환은 값이 손실될 우려가 있다.
작은 허용 범위 타입 = 큰 허용 범위 타입
package testt;
import java.util.Scanner;
public class blogTest {
public static void main(String[] args) {
int intValue = 10;
byte byteValue = (byte)intValue;
//큰 허용 범위 타입 앞에 (작은 허용범위타입)을 적어 강제 타입 변환을 시킬 수 있다.
System.out.println(byteValue);
intValue = 65;
char charValue = (char)intValue;
System.out.println(charValue);
//int형 65가 char타입으로 변환되면서 유니코드로 변환되어 "A"가 출력된다.
double doubleValue = 1.9;
intValue = (int)doubleValue;
System.out.println(intValue);
//강제 타입 변환으로 소수점 이하 0.9 손실이 발생한다.
}
}
'JAVA' 카테고리의 다른 글
JAVA 배열/배열선언/배열 길이 구하기/length (0) | 2022.02.12 |
---|---|
JAVA 변수 fianl 상수 (0) | 2022.02.08 |
JAVA Scanner(스캐너) 클래스 (0) | 2022.02.05 |
JAVA 반복문 - for문, while문, do~while문 (0) | 2022.02.04 |
JAVA 조건문 - if문, switch문 (0) | 2022.02.03 |
댓글