728x90
- 변수: 변하는 수.
단 하나의 값을 저장할 수 있는 메모리 공간(1Byte로 구성)
메모리 공간은 각각의 메모리 주소를 가짐
- 변수의 선언과 초기화
class Variable1_2 {
public static void main(String[] args) {
boolean flag = false;
char grade = 'A';
byte val = 127;
short sval = 128;
int num = 32768;
long price = 2_147_483_648L;
float tax = 3.14f;
double score = 3.14159265358979;
}
}
- 변수 생성 규칙
- 대소문자가 구분되며 길이에 제한이 없음
- 예약어(ex->true) 사용 불가
- 숫자로 시작 불가
- 특수문자 _ 와 $ 만 허용
- 변수의 종류: 클래스, 인스턴스, 지역 변수
class Variable1_4 {
static int classVal = 100; // 클래스 변수
int instanceVal = 200; // 인스턴스 변수
public static void main(String[] args) {
int num; // 지역 변수
// System.out.println("int = " + num); // Error 발생
num = 300;
System.out.println("int = " + num); // 100
// 인스턴스 변수
// System.out.println("instanceVal = " + instanceVal); // Error 발생
Variable1_4 instance = new Variable1_4 (); // 인스턴스 변수 사용을 위해 객체 생성
System.out.println("instanceVal = " + instance.instanceVal); // 100
// 클래스 변수
System.out.println("classVal = " + classVal);
// 같은 클래스 내부는 바로 접근 가능
System.out.println("Main.classVal = " + Variable1_4.classVal);
// 클래스 변수 : 클래스명.클래스변수명 으로 접근 or
}
}
- 기본 자료형: 자바 라이브러리에서 기본으로 제공하며, 사용할 메모리의 양이 정해져 있음
- n비트일 때의 표현 범위
- 부호 없는 정수: 0 ~ 2^n-1
- 부호 있는 정수: -2^(n-1) ~ 2^(n-1)-1
- 실수 자료형일 때는? 부동 소수점 방식
가수 부분과 지수 부분을 나누어서 나타냄: +-가수(M) x 밑수(2)^지수(E)
정규화: 밑수가 2인 상황에서 가수는 2 이하가 되어야 함. 모든 실수는 정규화를 할 때 1.m x 2^n과 같이 표현 가능
정밀도: 소수점 몇자리까지 오차없이 표현할 수 있는지
ex. float의 가수가 23인데 정규화를 통해 24자리까지 표현 가능 -> 2^24이므로 정밀도는 7자리
- 정수형 오버플로우: 해당 변수타입의 범위를 넘어가면 값을 순환
- 타입간의 변환 방법
- 숫자를 문자로: 숫자 + '0' -> 문자
- 문자를 숫자로: 문자 - '0' -> 숫자
- 숫자를 문자열로: 숫자 + "" -> 문자열
- "" + 7 + 7 = "77"
- 7 + 7 + "" = "14"
- 문자를 문자열로: 문자 + "" -> 문자열
- 문자열을 숫자로:
- Integer.parseInt("문자열")
- Double.parseDouble("문자열")
- 문자열을 문자로: "문자열".charAt(0)
- 상수와 리터럴
- 상수: 한 번만 값이 저장 가능한 변수
- 선언 방법: final 자료형 변수명;
- 리터럴: 그 자체로 값을 의미하는 것. 기존의 상수와 같은 의미
- 상수: 한 번만 값이 저장 가능한 변수
class Variable2_2 {
public static void main(String[] args) {
int score = 100; // 변수
final int finalScore = 1000; //상수
}
}
- 리터럴의 접두사와 접미사
long은 접미사 L, float은 f, double은 d(생략 가능)
접두사, 접미사는 대소문자를 구별하지 않음
진수를 나타내는 접두사: 0b(2), 0(8), 0x(16)
변수 < 리터럴: 리터럴이 변수의 타입 범위 이내라면 OK
- 참조 자료형
- 기본형을 제외한 나머지 타입 ex) String, System
- 참조형 변수는 null 또는 메모리 주소를 저장
- 타입에 관계없이 변수의 크기가 항상 4byte
class Variable3_5 {
public static void main(String[] args) {
// Date import 필요!
Date date; // 참조형 변수 date 를 선언
date = new Date(); // date 에 객체의 주소를 저장 , new 는 객체를 생성하는 명령어
System.out.println(date); // Wed Jan 11 20:54:45 KST 2023
}
}
- 형 변환
- 묵시적 형 변환: 바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우
- 명시적 형 변환: 바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우
- byte bNum = (byte)iNum // 괄호를 써서 바꿀 형을 명시해야 함
- 자료 손실이 발생할 수 있음