변수

변수란?

값을 저장할 수 있는 메모리상의 공간

변수 선언

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 이 출력된다.

오버플로우가 일어날 경우, 해당 자료형의 최대값 혹은 최소값으로 계산됨을 볼 수 있다.
이해를 돕기 위한 간단한 예시를 아래와 같이 그림으로 표현해봤다.