일기 대신 코드 슬쩍

[JAVA] Section6) 스코프, 형변환 본문

JAVA

[JAVA] Section6) 스코프, 형변환

코코자 2024. 3. 12. 14:24

스코프1 - 지역 변수와 스코프

우리가 여태 학습한 건 local variable

{} 코드블록 안에서만 변수가 존재함!!

  • 블록 내부에서 외부는 접근 가능(⭕)
  • 블록 외부에서 내부는 접근 불가(❌)

스코프2 - 스코프 존재 이유

  • 비효율적인 메모리 사용을 줄이고, 코드 복잡성을 감소 시킬 수 있음
  • 변수의 스코프는 꼭 필요한 곳으로 한정해서 사용할 것!

형변환1 - 자동 형변환

  • 작은 범위에서 큰 범위로는 값을 넣을 수 있지만, 큰 범위에서 작은 범위로는 문제가 발생!! → 소수점 버림, 오버플로우
  • int < long < double
  • 자동 형변환: 작은 범위 숫자 타입에서 큰 범이 숫자 타입으로 자동으로 형변환을 해줌

형변환2 - 명시적 형변환

  • 큰 범위에서 작은 범위로 대입 (일반적으로 컴파일 오류 발생)
package casting;

public class Casting2 {
    public static void main(String[] args) {
        double doubleValue = 1.5;
        int intValue = 0;

        // intValue = doubleValue; //컴파일 오류 발생
        intValue = (int) doubleValue; //형변환
        System.out.println(intValue);
    }
}

형변환과 오버플로우

  • int의 표현 범위를 넘어가는 수를 담게 되면 int가 표현할 수 있는 가장 작은 수 부터 다시 시작하는 셈(마치 시계가 한 바퀴 돌면 다시 처음부터 시작하는 것처럼!!)
  • 오버플로우 자체가 문제 상황이니 방법은 int를 long으로 바꾸는 수 밖에 없음

계산과 형변환

원칙

  1. 같은 타입끼리의 계산은 같은 타입의 결과를 낸다.
    • int + int 는 int를, double + double 은 double의 결과가 나옴
  2. 서로 다른 타입의 계산은 큰 범위로 자동 형변환이 일어난다.
    • int + long은 long + long으로 자동 형변환이 일어난다.
    • int + double 은 double + double로 자동 형변환이 일어난다.

'JAVA' 카테고리의 다른 글

[JAVA] Section7) Problems1  (0) 2024.03.12
[JAVA] Section7) 훈련  (0) 2024.03.12
[JAVA] Section5) Problems2  (0) 2024.03.09
[JAVA] Section5) Problems1  (0) 2024.03.09
[JAVA] Section5) 반복문  (0) 2024.03.09