변수의 접근 가능한 범위이다. 블록의 내부에서 외부는 접근이 가능하다.
지역 변수는 특정 지역에서만 사용할 수 있는 변수라는 뜻이다.
코드 블록이 끝나면 제거가 된다.
비효율적인 메모리 사용
if코드 블록에서 사용되는 코드가 main()코드 블록이 종료될 때 까지 메모리에 유지가 되기 때문에 메모리의 낭비가 된다.
코드 복잡성 증가
스코프가 넓은 것이 복잡한 경우 이해가 어렵게 된다.
조건이 맞으면 m의 값을 2배 증가해서 출력하는 코드이다.
변수는 꼭 필요한 범위로 한정해서 사용하기.
메모리를 효율적으로 사용하여 유지보수가 유용한 프로그램을 만들자.
좋은 프로그램은 무한한 자유가 있는 프로그램이 아니라, 적절한 제약이 있는 프로그램이다.
큰 범위에서 작은 범위는 문제가 발생한다.
소수점 버림
오버플로우
작은 범위에서 큰 범위로 대입은 허용된다.
int < long < double
자바는 기본적으로 같은 타입에 값을 대입할 수 있다.
작은 범위에서 큰 범위로의 대입은 허용한다.
doubleValue = intValue
doubleValue = (double) intValue
doubleValue = (double) 10
doubleValue = 10.0 //형 변환
double을 int로 대입
double doubleValue = 1.5;
int intValue = 0;
intValue = doubleValue; // 컴파일 오류가 발생한다.
intValue = (int) doubleValue; // 명시적 형변환
큰 데이터 타입에 있는 것은 작은 데이터 타입에 넣는 것을 허용하지 않는다.
기존 범위를 초과하여 표현하게 된다면 전혀 다른 숫자가 표현된다.
사이트를 들어가면 casting을 잘 못해서 -값이 발생하면 오버플로우가 발생했다 생각하면 된다.
형변환은 대입과 별개로 계산을 할 때 사용된다.
int + int = int , double + double = double의 결과가 나온다.
int + long = long + long으로 자동으로 형변환이 일어난다.
int + double = double + double로 자동 형변환이 일어난다.
double div3 = (double) 3 / 2; //명시적 형변환이 가능하다. (double) int / int