- 클래스: 객체를 원하는 형태로 타입 정의
- 멤버 변수: 객체의 값 저장
- 클래스 내에서 모든 메서드가 사용 가능
- 클래스 내에서 전역변수 역할을 한다.
- 클래스 안에 메서드가 여러개 있을 수 있는데, 그 메서드들이 멤버변수들을 마구마구 사용할 수 있다.
- 값을 초기화하지 않아도 초기값으로 heap에 저장된다.
- 자동초기화
숫자타입 : 0
객체타입 : null
boolean: false
- 지역 변수: 메서드 안에 선언한 변수와 파라미터.
- 메서드 안에서만 사용이 가능하다.
- 멤버 변수와 이름이 같아도 되지만, 저장되는 메모리가 다르기 때문에 상관이없다.
- 값을 초기화하거나 할당하지 않으면 쓰레기값이 stack에 저장된다(자동초기화 X)
- 메서드: 기능 구현
- 메서드 타입
- void : return 값이 없을 때,
- int : return 값이 int일 때,
- String : return 값이 String일 때.
- 객체는 heap 에 저장된다
- 메서드와 메서드 지역변수들은 stack에 저장된다.
- 메서드가 끝나면 메모리가 반환된다(메모리가 사라진다기보다는 쓰레기값을 가지고있다가 유의미한 값이 입력되면 그 값으로 치환되는개념?)
기본형
class Test{
int x;
int y;
메서드타입 메서드명(파라미터 리스트){
구현내용
}
}
예)
메서드타입 메서드명(파라미터 리스트){
구현내용
return 4;
}
만약 리턴값이 4라는 정수면, 메서드 타입은 int
같은 로직에 따라서 리턴값이 4.235면 메서드 타입은 double 이된다.
메서드명을 짓는 방식이 중요하다. 회사마다 달라서 회사 들어가면 알려준다.
파라미터: 외부에서 필요한 값을 받아온다.
왜? 만약 메서드가 + 연산 메서드라면
메서드타입 메서드명(파라미터 리스트){
int z;
return 4;
}
void test(){
System.out.println(z)
}
출력이 안된다. 메서드의 지역변수 z는 다른 메서드에서 사용 불가!