코딩/Java

자바(JAVA) 기본문법 - 상수 & 리터럴 & 정수 대입

숲속의 움비 2021. 1. 24. 04:13
반응형

상수 (constant)

상수란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미합니다.

하지만 상수가 변수와 다른 점은 프로그램이 실행되는 동안 메모리에 저장된 데이터를 변경할 수 없다는 점입니다.

public class example1 {
	public static void main(String[] args) {
		final double Pl = 3.14;
		
		// 변수 이름은 낙타 표기법
		int daysOfYear = 365;
		
		// 상수 이름은 모두 대문자
		final int DAYS_OF_YEAR = 365;
		final int HOURS_OF_DAY = 24;
		
		int days = DAYS_OF_YEAR*HOURS_OF_DAY;
		int days2 = 365*24;	
	}
}

 

 - 프로그래밍에서 상수는 변경하지 않도록 약속한 변수

     대표적인 상수인 원주유의 경우 프로젝트 종류별로 값이 다르게 지정될 것이다.

     하지만 하나의 프로젝트 안에서는 값이 동일해야 하고 변경할 수 없다.

     이럴 때 final 키워드를 붙여 변경을 금지하고 대문자를 이용해 상수임을 알린다.

 - final 키워드는 변경을 금지한다.

     변수에 적용하면 상수가 된다.

     메소드에 적용하면 override가 금지된다.

     클래스에 적용하면 상속이 금지된다.

 

 

 

리터럴 (literal)

리터럴이란 그 자체로 값을 의미하는 것입니다.

즉, 변수와 상수와는 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않습니다.

public class example2 {
	public static void main(String[] args) {
		int a = 100;			// 정수 리터럴
		double f = 3.14;		// 실수 리터럴
		String str = "Hello";	// 문자열 리터럴
	}
}

- 리터럴은 소스 코드에서 고정된 값을 의미하며 변수 초기화에 주로 사용된다.

 

리터럴의 타입

public class example1 {
	public static void main(String[] args) {
		long var1 = 10;
		long var2 = 20L;
		long var3 = 1000000000000;	// <- 컴파일 에러
		long var4 = 1000000000000L;
	}
}

 - 정수를 대표하는 타입은 int이다 -> 정수 리터럴은 기본적으로 int로 취급

 

정수 대입

public class example4 {
	public static void main(String[] args) {
		int a = 10;
		long b = 20;
		int c = b;
		long d = a;
	}
}

 - 범위가 좁은 타입을 넓은 타입에 대입하면 자동 변환된다.

 - 범위가 넓은 타입을 좁은 타입에 대입하면 오류 (int c = b;) -> 개발자가 수동으로 타입을 변환해야 한다.

반응형