본문 바로가기
Study/Java

[Java] 변수 & 자료형 & 연산자

by JYHAN 2020. 6. 29.

변수

데이터(자료)를 임시로 담을 수 있는 메모리 공간 

 

ex) 선언 후 초기화

int i;
i=5;

ex) 선언과 초기화 동시

int i =  5;

 

int는 자료형, i는 변수명, = 은 대입 연산자, 10 은 변수값이다

 

기본 자료형(Primitive Type)

  타입 메모리 기본값 범위
논리형 boolean 1 byte false true, false
정수형 byte 1 byte 0 -128 ~ 127
short 2 byte 0 -32,768 ~ 32,767
int 4 byte 0 -2,147,483,648 ~ 2,147,483,647
long 8 byte 0L  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 4 byte 0.0F (3.4 X 10^-38) ~ (3.4 X 10^38)
double 8 byte 0.0 (1.7 X 10^-308) ~ (1.7 X 10^308)
문자형 char 2 byte (Unicode) '\u0000'  '\u0000' ~ 'uFFFF' (16비트 유니코드 문자 데이터)

 

객체 자료형(Reference Type)

  • 기본 자료형 타입을 제외한 타입을은 모두 객체 자료형(Reference Type)이다
  • 값이 저장되어 있는 곳의 주소 값은 힙(Heap)메모리에 저장된다
  • 비어있는 객체를 의미하는 Null이 존재한다
  • String은 객체 자료형이다

기본 자료형과 객체 자료형

기본 자료형은 데이터 변수에 직접 저장되고, 객체 자료형은 객체 메모리 주소변수에 저장된다.

객체 자료형은 C 계열에서는 포인터라고 하고, Java에서는 레퍼런스라고 부른다.

 

 

자동(묵시적) 형 변환은 작은 공간의 메모리(ex: short)에서 큰 공간의 메모리(ex: int)로 이동

명시적 형 변환은 큰 공간의 메모리(ex: int)에서 작은 공간의 메모리(ex: short)로 이동 <---- 데이터가 누실될 수 있다

정수형은 실수형으로 자동 형변환된다

byte b = 2;
int i = b; // OK

int i = 2;
byte b = (byte) i;

int i = 2000;
byte b = (byte) i; <- -48 ( value loss)

long vae = 100;
float fvar = var;

서식 문자

%d - 10진수

%o - 8진수

%x - 16진수

%c - 문자

%s - 문자열

%f - 실수

 

서식 문자의 정렬 & 소수점 제한

		System.out.printf("%5d\n", 123);
		System.out.printf("%5d\n", 1234);
		System.out.printf("%5d\n", 12345);
		
		System.out.println();
		
		System.out.printf("%f\n", 1.23);
		System.out.printf("%.0f\n", 1.23);
		System.out.printf("%.1f\n", 1.23);
		System.out.printf("%.2f\n", 1.23);
		System.out.printf("%.3f\n", 1.23);
        
		// 결과
 		  123
 		 1234
		12345

		1.230000
		1
		1.2
		1.23
		1.230

 

연산자

단항 연산자: 피연산자가 하나 존재

++x, --x, !x

이항 연산자: 피연산자가 두 개 존재

x=y, x<y, x!=y

 

삼항 연산자: 피연산자가 세 개 존재

x>y: true ? false

x=2 y=1
x>y: true ? false
Result -> true

 

비트 연산자: 데이터를 비트(bit) 단위로 환산하여 연산을 수행하며, 다른 연산자보다 연산 속도가 향상된다

&: AND 연산: a와 b가 모두 1이면 1

|: OR 연산: a와 b 중 하나라도 1이면 1

^: XOR 연산: a와 b가 같지 않으면 1

댓글