Java

Java(상수/리터럴, 형변환과 컴파일)

yoooon1212 2024. 4. 9. 11:37

<상수와 리터럴>

 

상수(constant)란?

  • 변하지 않는 수  예) 원주율 3.14, 1년의 12개월
  • 반드시 값이 초기화 되어야 하고 한번 초기화 되면 변경할 수 없게 하는 메모리 공간을 의미함.
  • final 이라는 예약어로 상수를 선언
  • 상수명은 주로 '대문자', _ (언더바) 사용함.
  • 코드의 의미가 명확해지고, 나중에 값을 변경해야 할 경우에도 쉽게 대응 가능함.

 

리터럴(literal)란?

  • '상수'의 다른 이름
  • 소스 코드 내에서 고정된 값을 직접 나타내는 데이터
  • 변수나 상수에 할당되는 값 자체를 표현하며, 이 값들은 프로그램 실행 중 변경될 수 없습니다.
리터럴과 상수의 차이는?
리터럴은 '값 자체'를 의미하고, 상수는 '값이 저장되는 변경 불가능한 메모리 공간'을 의미

 

 

<형변환(type casting)>

 

  • 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 과정
  • 암시적/명시적 형변환
  • 자동 형변환(작은->큰 상자로 들어감)
  • 강제 형변환(큰->작은 상자로 들어감) => 컴파일러가 작은 상자에 큰 상자로 값을 넣을 수 없어 데이터 손실 발생 가능

 

 

 

<자동 형변환>

1. int intDataBox = 100; //4byte
2. double doubleDataBox; //8byte
3. doubleDataBox = intDataBox; //4byte 상자를 8byte 상자에 넣음
4. System.out.println(doubleDataBox);

1. intDataBox에 100을 선언과 동시에 초기화함.

2. doubleData를 선언함.

3. intDataBox(4byte)를 doubleDataBox(8byte)에 넣음. 즉, 작은 상자가 큰 상자 안에 들어감.

4. doubleDataBox를 출력하면 int 변수의 값이 정수(100) -> 실수(100.0)이 나옴.

 

 

<강제 형변환> 

1. final double PI = 3.14159; 
2. int intBox = (int)PI;
3. System.out.println(intBox);

1. final 상수를 사용해서 변수 원주율(PI)를 선언 및 초기화한다.

2. 실수(double) PI를 강제로 정수(int)로 변환하여 intBox에 넣는다. 즉, 큰 상자를 작은 상자에 강제로 넣어 변환시킨 것이다. 

3. intBox 출력 시 3.14159 이 아닌 3으로 소수점 이하의 값을 버리고 출력된다. 이를 데이터의 손실이 발생했다고 한다.

 

 

 

<명령어를 통한 컴파일 실행>

 

- bin 은 컴파일러가 만들어준 것임.

- java 명령어를 수행하려면 .class 파일이 존재해야 함.

 

<cmd를 통한 컴파일 실행 과정>

1. cmd를 열어 d: (D 드라이브로 경로 변경) 입력

2. bin파일 내에서 삭제할 .class 파일 삭제 후 src 파일 경로 복사

3. cmd에서 cd +복사한 파일 경로 붙여넣기

4. dir 입력 -> 파일명.java 파일 있는지 확인

5. javac 파일명.java 입력(컴파일함)

-> 오류 뜰 시 6번으로  

6. javac -encoding UTF-8 파일명.java 입력해서 인코딩 설정하기 -> src 파일에 .class 파일 생성됨

(이 class 파일은 JVM 이 읽을 수 있는 바이트코드로 이루어져 있음.)

7. java 파일명.java 입력 -> 입력 값 뜸.

 

 

* 자바 파일을 컴파일하고 실행하는 전 과정을 자동으로 해주는 도구: IDE