[ Review ]
제어문
조건문 if / switch
if(<boolean expression>){
}
else if(boolean expression>) {
} else {
}
switch ( variable ) {
case : a
--
break;
case : b
--
break;
defualt:
--
반복문 for, while, do while
for(시작 변수 지정, 반복이 끝나는 조건, 변수 증가조건) {
- 반복문 - }
변수 지정
while (반복 끝나는 조건) {
- 반복문 - }
[ Variable Scope / 변수 범위 ]
Variable 변수란 ? 데이터를 저장하는 공간, 변경이 가능하다 !
상수 ↔ 변수 : 정보의 그릇
public class Person {
private String name;
// name : 인스턴스 변수 instance variable
// count, j : 지역변수 local variable , 매개변수, 파라미터
public void eat(int count) {
int j = 2;
}
}
public Class Test {
public static void main(String[] args) {
// p : 지역 변수 local variable, reference variable
Person p = new Person()
}
}
java의 변수 종류
1. 인스턴스 변수 instance variable
* instance : class로부터 실재(實在)화된 것
- 객체 instance 의 속성 정보를 저장하는 변수 = Object의 value
- 그 속성정보를 계속 유지하기 위해 사용한다.
- 클래스 레벨에서 선언, 초기화 된다.
- 객체마다 서로 다른 정보를 가지고 있기 때문에 사용한다.
- Heap 영역에 계속해서 저장이 된다.
* heap : 동적 메모리 공간
2. 지역 변수 local variable (임시 변수)
- 특정한 method나 constructor에서만 선언, 초기화 된다.
해당 메서드가 실행되는 시점에서만 메모리에 저장되었다가 해제된다. - 해당 메서드(기능)을 실행할 때만 임시로 사용하고자 사용한다.
- Stack 영역에 저장이 된다.
*stack : 먼저 지정된 값이 가장 나중에 나오고, 나중에 지정된 값이 가장 먼저 나온다.
(바닥부터 깔려서 차곡차곡 쌓여서, 위에 있는 것부터 꺼는 형태)
** Queue: First In, First Out (바닥부터 깔려서, 바닥에 있는 것부터 꺼내는 형태)
3. 클래스 변수 Static variable / Class variable (전역 변수)
- 변수 앞에 static이 붙어있다.
- 이후 추가 공부 예정
* 변수를 나누는 이유 ? 메모리를 효율적으로 사용하기 위해서 !
인스턴스 변수는 객체의 속성 정보가 저장되어 정보를 계속 유지하고자 할 때 사용하고,
지역 변수는 해당 메서드(기능)를 실행할 때만 임시로 사용하고자 할 때 쓴다.
참고 )
java 주요 메모리 영역
1 . Stack 영역 : 지역 변수(local variable)가 저장된다.
2. Heap 영역 : 인스턴스 변수(instance variable)가 저장된다.
3. Class(Method) area 영역 : Static 변수가 저장된다.
[ Object Initialization ]
인스턴스 변수는 선언만 해도 기본 초기화가 된다.
String | 참조형 데이터타입 | null |
int | 정수형 데이터타입 | 0 |
double | 실수형 데이터타입 | 0.0 |
boolean | 논리형 데이터타입 | false |
객체 초기화 진행의 단계
1. 인스턴스 변수의 기본 초기화
2. 인스턴스 변수의 명시적 초기화
3 생성자 Constructor에 의한 초기화
지역 변수는 명시적 초기화가 필요하다.
[ UML Relationship ]
: UML(통합모델링 언어) 중 Class Diagram의 관계
association > aggregation > composition

위 관계를 starUML로 class diagram으로 표현하고, 이를 바탕으로 코드를 구현해본다.

- association (연관) 관계 : use a
Person - RentCar
예) 사람이 렌트카를 이용한다.
*메서드에서 일시적으로 RentCar객체를 사용하는 관계를 의미한다* - aggregation (집합) 관계 : has a
Person - SmartPhone
예) Person사람이 스마트폰을 가지고있다.
* instance 변수 / null로 처리된다* - composition (구성) 관계 : consist of
Person - Brain / Car - Engine
예) 사람이 뇌를 가지고 있다. / 자동차는 엔진을 가지고있다.
* 자동차가 생성되기 위해서는 엔진이 필수적이므로 *

'JAVA SE > 이론 및 개념' 카테고리의 다른 글
[20.07.16/Day_07] Java SE / String API, Overloading (0) | 2020.07.16 |
---|---|
[20.07.15/Day_06] Java SE / Array 배열 (0) | 2020.07.16 |
[20.07.13/Day_04] Java SE / 연산자, 제어문(조건문,반복문) (0) | 2020.07.13 |
[20.07.10/Day_03] Java SE / Encapsulation, 생성자 Constructor , DataType (0) | 2020.07.09 |
[20.07.09/Day_02] Java SE / OOP(Object Oriented Progamming) 개념 (0) | 2020.07.09 |