자바/자바 입문 공부일지

자바 기초 공부 일지 5. 상수 (리터럴), 자료형 변환

Tomitom 2022. 10. 24. 16:49
반응형

 

 

● 변수에 값을 딱 한 번 할당할 수 있으면 상수입니다. 

한 번 할당된 값은 변경이 불가능하며 키워드 final 이 붙어있는 변수를 상수라고 합니다. 

 

ex) final in MAX_SIZE = 100; 

(초기화 하지 않으면 딱 한 번 초기화가 가능합니다.

상수는 선언과 동시에 초기화를 해줍니다.) 

 

final 기반의 상수를 선언할 때에는 모두 대문자로 짓는 것이 관례이며,

이름이 둘 이상의 단어로 이루어진 경우에는 언더바로 연결하는 것이 관례입니다. (스네이크 표기법) 

반드시 선언과 동시에 초기화를 해줍시다. 

 

package day11;

public class test02 {

	public static void main(String[] args) {
		
		
		int number; 
		number = 3;
		number = 5;
		number = 2133;
		
		final int MY_NUMBER = 123;
		
		System.out.println(number);
		System.out.println(MY_NUMBER);

	}

}

 

리터럴이란 기본 자료형을 이용해서 표현이 되는 상수를 리터럴 상수라고 합니다. 

자료형 이름을 쓰기 전의 데이터!  데이터 그 자체! 

 

ex) int num1 = 5+7;

double num2 = 3.3 + 4.5;

 

● 정수는 무조건 int형으로 인식하기로 약속이 되어 있습니다. 

따라서 5와 7은 정수형 리터럴이고, 3.3 과  4.5 는 실수형 리터럴입니다. 

만약 아주 긴 리터럴 상수가 있다면 어떻게 쓸까요. 

 

long형 상수(리터럴)의 표현 방법 입니다. 

int형을 기본으로 하기 때문에 긴 상수의 경우 오류가 발생합니다. 

 

ex) System.out.println(12345674+ 45648693); 

컴파일을 할 경우에는 int가 4바이트인데 이것을 넘어갔으므로 오류가 발생합니다. 

오류 - integer number too large

 

ex) System.out.println(12345674L+ 45648693L); 

L이라는 접미사(숫자 끝)를 붙여서 long 상수로 표현한다고 하면 오류가 발생하지 않습니다. 

 

정수형 상수는 접두사(숫자 앞)에 0B, 0b를 붙여서 2진수를 표현합니다. 

0B111; -> 이진수임

0b11010110; -> 이진수임

 

● 또한 숫자를 셀 때 쉼표를 쓰고 싶은 경우에는 언더바를 삽입해서 세자리 수 원단위를 표시합니다. 

12_314_154;

100_000_000;

 

● 실수형 상수는 기본이 double 형이나 double 형임을 명시하기 위해 D 또는 d를 삽입합니다. 

ex) System.out.println(1.01054999D + 2.1054999D); 

 

● 이스케이프 시퀀스 

\b  백스페이스 문자 

\t  탭 문자

\\  백슬래시 문자

\'  작은따옴표 문자 

\''  큰따옴표 문지

\n  개 행 문자(줄바꿈)

\r   캐리지 리턴 문자 

이 자체만 써놓으면 문자형 리터럴 상수의 성격을 가집니다.

 

코드로 직접 적어서 에러 메세지를 확인해볼게요. 

 

 

아무것도 붙이지 않으면 이것은 범위를 초과하는 숫자라고 뜹니다. 접미사 L을 붙여줍니다. 

 

그래도 숫자가 크네용..

 

L을 인식하고 오류의 메세지가 바뀌었습니다.

이런 식으로 오류를 확인하면 접미사 접두사에 붙여야할 범위값을 알게 됩니다. 

접미사와 접두사를 한 번 정리할게요. 

 

 

접미사 L 범위가 큰 상수에 대해 long 형 상수임을 명시하는 방법
접두사 0B 2진수 임을 명시하는 방법 
접두사 0  8진수
접두사 0X 16진수

 

 

●  형 변환

 

이렇게 많은 자료형이 있는데, 만약 두 피연산자의 자료형이 일치해야만 연산이 가능하다면 예상치 못한 오류가 많이 발생하기 때문에, 자바에서는 자동으로 자료형을 변환합니다. 

 

예를 들어 int 50 과 long 31448782487L 이라는 값이 있을 때, 두 정수는 바이트가 바이트가 초과하여 자료형이 일치하지 않습니다. 그러나 자바에서는 이 두 값을 연산할 수 있게 해주는데, 그것이 바로 자동 자료형 변환입니다. 

자동 형 변환 (= 묵시적 형 변환)

 

 

자동 형 변환은 자료형의 크기가 큰 쪽으로 변환이 됩니다. 

서로 다른 바이트 숫자끼리 끼워맞출 때 데이터 손실이 전혀 없을 수는 없지만

소수점 이하의 데이터 손실을 최소화하기 위해 자료형의 크기와 상관없이 실수 자료형이 우선합니다. 

 

package day11;

public class test02 {

	public static void main(String[] args) {
	
		int num1 = 50;
		long num2 = 3147483647L;
		System.out.println(num1 + num2);
		
	}

}

두 값을 더한 값이 출력됩니다.

다만 두 피연산자는 자료형이 숫자로 일치해야만(문자X) 위 방법처럼 연산을 진행할 수 있습니다. 

피연산자의 자료형이 일치하지 않을 때에는 Type 변환을 통해 일치를 시켜야 하는데 

이것을 명시적 변환이라고 합니다. 

 명시적 형 변환 (=강제적 형 변환) 

package day11;

public class test02 {

	public static void main(String[] args) {
	
		double pi = 3.1415;  // 실수형 파이를
		int number_change = (int)pi;  // 정수형 파이로 
		
	}

}

 

 

여기까지 리터럴에 대해서 알아보았습니다. 

다음에는 연산자에 대해서 공부해볼게요! 아자자.. ! 

반응형