1. 변수의 스코프와 라이프타임
변수의 스코프란 해당 변수를 사용할 수 있는 영역범위를 뜻한다. (보통 {}괄호 안에서 선언되고 사용되어진다.)
라이프타임은 해당 변수가 메모리에 언제까지 살아있는지를 의미한다.
단, 지난 포스팅에서 언급했듯이 가비지 컬렉터가 발동하는 주기는 알수 없으므로 정확한 라이프타임 또한 알수 없다.
변수의 경우 선언하는 위치(scope)에 따라 Instance Variables, Class Variables, Local Variables 로 나눌 수 있다.
Instance Variables
- 클래스 안에서 선언되어있고, 어떠한 method나 block안에서 선언되지 않은 변수
scope - static method를 제외한 클래스 전체 (static메소드 호출 시 객체의 생성 여부를 알수 없기 때문에 사용불가하다.)
lifetime - 클래스를 인스턴스화한 객체가 메모리에서 사라질 때 까지
Class Variables
- 클래스 안에서 선언되어있고, 어떠한 메서드나 블럭안에서 선언되지 않았으며 static 키워드가 포함되어 선언된 변수
인스턴스 변수는 각각 고유한 값을 가지지만 클래스 변수는 모든 인스턴스가 공통된 값을 공유한다.
때문에 한 클래스의 모든 인스턴스에서 공통적인 값을 가져야할 때 클래스 변수로 선안한다.
(접근제한자 public을 붙이면 프로그램 내 어디서든 접근할 수 있는 전역 변수로 사용할수 있다.)
scope - 클래스 전체
lifetime - 프로그램 종료시 까지
Local Variables
- 인스턴스 변수, 클래스 변수가 아닌 모든 변수
scope - 변수가 선언된 block 내부
lifetime - control 이 변수가 선언된 block 내부에 있는 동안
2. 타입 변환, 캐스팅 그리고 타입 프로모션
Type casting (더큰 범위의 자료형에서 더 작은 범위의 자료형으로의 형변환)
Primitive Type(기본형) : 자유롭게 변환 가능하다. 단, 데이터 범위에 따라 값 손실의 가능성이 있다.
Type promotion (더 작은 범위의 자료형에서 더 큰 범위의 자료형으로의 형변환)
Primitive Type(기본형) : 값손실 등 데이터 변형이 없기 때문에 명시하지 않아도 자동으로 형변환이 가능하다.
Reference type
상속 관계에서만 가능
모든 subclass 는 superclass 의 컨텐츠를 가지고 있으므로 superclass 로의 casting 이 가능하다.
모든 superclass 는 subclass 의 컨텐츠를 가지고 있지 않을 수도 있음, 그러므로 오류 발생 가능성이 높다.
천천히 읽고 싶은 포스팅🐤🐤🐤
https://mangkyu.tistory.com/47
'Programming > Java \ Spring' 카테고리의 다른 글
🔥자바스터디🔥 instanceof / 화살표(->) 연산자 / (optional) Java 13. switch 연산자 (0) | 2021.05.23 |
---|---|
🔥자바스터디🔥 자바의 정석 CH3 연산자(단항, 산술, 비교, 논리 등) (0) | 2021.05.23 |
🔥자바스터디🔥 자바의 정석 CH2 변수의 선언과 초기화, 데이터 타입, 형변환 (0) | 2021.05.16 |
🔥자바스터디🔥 자바의 정석 CH1 자바언어의 특징, JVM, 자바 컴파일러 (0) | 2021.05.12 |
[인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(회원 관리 예제 - 웹 MVC 개발) (0) | 2021.03.30 |