변수
변수란?
값을 저장할 수 있는 메모리상의 공간
변수 선언
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
변수타입 변수명 = 할당할 값;
// 숫자
int a = 10; // 정수
long b = 1258023; // 정수 (큰 값)
float c = 1.1; // 실수
double d = 8000.4093; // 실수 (큰 값)
// 문자
char ch = 'c'; // 문자 (1개)
String str = "안녕하세요"; // 문자열
// 임시로 변수명을 선언
// 이후 변수에 값을 넣을 수 있다.
int a;
float b;
a = 10;
b = 3.1;
변수명 규칙
- 첫 번째 글자는
소문자
혹은_
혹은$
로 시작한다. - 합성어(단어+단어)일 경우 두 번째 단어의 첫 글자를 대문자로 작성한다.
- java에서 미리 지정된 예약어는 사용이 불가능하다.
옳은 예시 age, firstName, _time, $_cost, deliveryCost …
틀린 예시 print(예약어), Page(첫 글자를 대문자로 씀), 3person(첫 글자 숫자)
자바의 자료형
종류 | 자료형 | 값 | 특징 | 크기 | 접미사 |
---|---|---|---|---|---|
논리형 | boolean | false, true | 1byte(8bit) | 없음 | |
정수형 | byte | -128 ~ 127 | 1byte(8bit) | ||
정수형 | short | -32,768 ~ 32,767 | 2byte(16bit) | ||
정수형 | int | -2,147,483,648 ~ 2,147,483,647 | 정수형의 기본 자료형 | 4byte(32bit) | |
정수형 | long | -2^63 ~ 2^63 -1 | 8byte(64bit) | L | |
실수형 | float | 1.4E-45 ~ 3.4E38 (1.410^-45 ~ 3.410^38 | 4byte(32bit) | f | |
실수형 | double | 4.9E-324 ~ 1.8E308 | 실수형의 기본 자료형 | 8byte(64bit) | d |
문자형 | char | ₩u0000 ~ ₩uffff | 작은 따옴표 안에 선언합니다. | 2byte(16bit) | 없음 |
참조형 | 위 기본형을 제외한 나머지 | 객체의 주소를 참조한다. | 없음 | ||
String | 문자열 | 큰 따옴표 안에 선언합니다. | 없음 | ||
class | 객체. 클래스. | 없음 | |||
- 문자형은 작은 따옴표에(‘’),
- 문자열은 큰 따옴표에(“”) 담습니다.
형변환
변수 혹은 값을 다른 타입으로 변경하는 것을 의미한다.
기본 자료형은 boolean 형을 제외한 나머지 7개 타입은 서로 형변환이 가능하며
참조자료형의 경우 같은 타입(상속)인 경우만 형변환이 가능하다.
참조자료형의 경우 형변환을 업 캐스팅, 다운 캐스팅이라고 한다.
자동 형변환
더 큰 범위의 타입으로 형변환을 할 경우, 별도의 형변환 선언 없이도 형변환이 가능하다.
1
2
3
4
5
6
byte small = 10;
int big;
big = small;
System.out.print(big);
==> 10
강제 형변환
혹은 더 작은 범위를 표현하는 타입으로 형변환을 하는 경우, 별도의 형변환 선언이 필요하다.
1
2
3
4
5
6
int big = 1000;
byte small;
small = (byte)big;
System.out.print(small);
==> -24
숫자형
숫자형의 표시
숫자형의 표시에 대한 추가 사항을 아래에 설명한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
// 정수를 각 진수로 표현
// 별도 표현법이 없는 경우 기본 자료형인 int 형으로 인식된다.
int dNum1 = 10; // int형, 10진수로 10
long dNum2 = 010; // int형, 8진수는 앞에 0을 붙인다.
int hexNum = 0x10; // int형, 16진수는 앞에 0x를 붙인다.
int cant = 4187912389; // 선언 불가능. int형에서 담을 수 있는 범위를 벗어남
long can = 4187912389L; // 선언 가능. long 형으로 담을 수 있다. L 꼭 붙이기.
long num = 100_000_000L; // 구분자를 통해 구별하기 쉽게 표현 가능
// long 형은 뒤에 L을 붙임으로 구분한다.
1
2
3
4
5
6
7
8
9
10
11
// 실수를 표현
// 실수는 접미사를 통해 그 타입을 구분한다.
// float은 f(혹은F), double은 d(혹은D) 로 표시
// 표시를 안할 경우 기본 자료형인 double 형으로 인식된다.
float pi1 = 3.14f;
float pi2 = 3.14F;
double dou1 = 1.523d;
double dou2 = 1.523D;
정수형의 기본자료형 int
정수형의 기본자료형은 Int이다.
정수형의 오버플로우
오버플로우란, 특정 자료형에서 담을 수 있는 값을 넘어서는 것을 말한다.
예를 들어, Int 형에서 담을 수 있는 -2,147,483,648 ~ 2,147,483,647 범위를 벗어나는 오버플로우 경우를 아래에 설명한다.
1
2
3
4
5
6
int a = 2_147_483_647;
System.out.println(a+1);
==> -2147483468
int 형이 최대로 표현할 수 있는 수인 2,147,483,647
에 1을 더한 값을 출력하면,
int 형이 담을 수 있는 최소의 수인 -2,147,483,648
로 결과가 출력된다.
이러한 현상이 바로 오버플로우이다.
1
2
3
4
5
6
int a = -2_147_483_468;
System.out.println(a-1);
==> 2147483467
반대로 최소의 수인 -2,147,483,648
에서 1을 빼보면
int 형이 최대로 표현할 수 있는 수인 2,147,483,647
이 출력된다.
오버플로우가 일어날 경우, 해당 자료형의 최대값 혹은 최소값으로 계산됨을 볼 수 있다.
이해를 돕기 위한 간단한 예시를 아래와 같이 그림으로 표현해봤다.