변수
메모리(RAM)에 값을 기록하기 위한 공간
변수사용 목적
✅ 가독성이 좋아짐
✅ 재사용성 증가로 코드량 감소
✅ 유지보수 용이
변수의 선언 : 메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것
사용방법 : 자료형 변수명;
선언 예시 : int inum;
자료형
데이터 저장단위
비트 (bit) : 컴퓨터가 나타내는 최소 단위 = 2진수 값 (0 or 1)
바이트 (byte) : 데이터 처리 또는 문자의 최소 단위로 8개 비트가 모여 하나의 바이트가 됨
자료형 저장 가능 범위
자료형 | 범위 | 크기(bit) | 기본값 |
---|---|---|---|
boolean | true, false | 8 | false |
char | 0~65,535(유니코드문자) | 16 | '\u0000' |
byte | -128 ~ 127 | 8 | 0 |
short | -32,768 ~ 32,767 | 16 | 0 |
int | -2,147,483,648 ~ 2,147,483,647 | 32 | 0 |
long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 64 | 0L |
float | ±1.4E-45 ~ 3.4E38 | 32 | 0.0f |
double | ±4.9E-324 ~ 1.8E308 | 64 | 0.0 또는 0.0d |
변수 명명 규칙
✅ 대소문자가 구분되며 길이 제한이 없다.
✅ 예약어를 사용 하면 안됨ex) true, false
✅ 숫자로 시작하면 안됨
ex) age1 [O] 1age [X]
✅ 특수문자는 _ 와 $ 만 사용 가능
리터럴
변수에 대입되는 값 자체를 의미함
변수와 값 양쪽 둘다 타입이 같아야함!long I = 100000L; (양쪽이 타입이 같아야해서 마지막에 L붙임)
float f = 0.123f; (양쪽이 타입이 같아야해서 마지막에 f붙임
double d = 3.14; (소수점 뒤에 안붙이면 디폴트 값이 double 형임)
char c = 'A';
String str = "A";
상수
한 번만 저장할 수 있는 메모리
오버플로우
밑에 사진에서 설명한 자료형의 범위를 초과한 경우를 오버플로우라고 한다.
📌 byte의 자료형이 127까지만 출력되기 때문에 그 이후부터는 거꾸로 출력되는 것을 볼 수 있다!
형변환
값의 자료형의 바꾸는 것! (boolean 제외)
형변환의 (자동형변환, 강제 형변환) 으로 나뉨
자동 형변환 : 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 범위가 큰 자료형으로 변환
// 예시
int a = 12;
double d = 3.3;
double result = a + d; // 정수형 12가 12.0으로 변환 (자동현변환)
// 12.0 + 3.3 = 15.3
강제 형변환 : 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환 (데이터 손실 발생할 수 있음)
double tmp;
int name= (int)tmp; // double이였던 tmp가 int로 강제 형변환 시킴
변수와 메모리 구조
RAM 구조 | 하는 일 |
---|---|
Static | static예약어로 선정된 필드, 메소드가 저장되는 공간 클래스 변수 등 |
Heap | new연산자에 의해 동적으로 할당하고 저장되는 공간, 객체 , 배열 등 |
Stack | 메소드를 호출하면 자동생성 메소드가 끝나면 자동소멸 지역변수, 매개변수, 메소드 호출 스택 등 |
출력 메소드
정렬 방법
ex) - %5d : 5칸을 확보하고 오른쪽 정렬
- %-5d : 5칸을 확보하고 왼쪽 정렬
- %.2f : 소수점 아래 2자리까지만 표시
escape 문자
특수문자 | 문자리터럴 | 비고 |
---|---|---|
tab | \t | 정해진 공간만큼 띄어쓰기 |
new line | \n | 출력하고 다음라인으로 옮김 |
역슬래쉬 | \\ | 특수문자 사용시 백슬러시(\) 넣고 특수문자를 넣어야함 |
작은 따옴표 | \' | 특수문자 사용시 백슬러시(\) 넣고 특수문자를 넣어야함 |
큰 따옴표 | \" | 특수문자 사용시 백슬러시(\) 넣고 특수문자를 넣어야함 |
유니코드 | \u | 유니코드 표시할 때 사용 |