Tv t1 = new Tv();
Tv t2 = new Tv();
이 두 줄은 각기 다른 참조변수로 주소가 다름.
1. Tv t;
Tv 클래스 타입의 참조변수 t를 선언해서 메모리에 참조변수t를 위한 공간이 마련됨.
2.t = new Tv();
연산자 new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성된다.
그다음으로 대입연산자에의해 객체의 주소값이 참조변수 t에 저장된다.
tip. 인스턴스는 참조변수를 통해서만 다룰 수있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
Tv tv1,tv2,tv3 -> Tv[] tvArr = new Tv[3];으로 표현 가능.
배열의 초기화블럭을사용하면
Tv[] tvArr = {new Tv() , new Tv(), new Tv()};로표현가능.
다뤄야할 객체수가 많은경우
Tv[] tvArr = new Tv[100];
for(int i=0; i<TvArr.length;i++){
tvArr[i] = new Tv();
클래스
-클래스란 객체를 생성하기 위한 틀이며 , 속성과 기능으로 정의되어있다.
-클래스는 데이터와 함수의 집합.
변수의종류 - 클래스변수,인스턴스변수,지역변수
클래스변수 ->클래스영역 ->클래스가 메모리에 올라갈때 생성.
인스턴스변수 ->클래스영역 -> 인스턴스가생성되었을때 생성
지역변수 -> 클래스영역이의의영억(메서드) -> 변수선언문이 수행되었을때
클래스변수는 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우, 클래스변수로 선언해야 한다.
인스턴스변수와달리 인스턴스를 생성하지않고도 바로사용가능.
사용법 : 클래스이름.클래스변수
접근제어자 public을 사용하면 전역변수의 성격을 갖는다.
메서드(method):특정 작업을 수행하는 일련의 문장들을 하나로 묶은것이다.
메서드사용이유
1.중복된코드제거
2.높은재사용성
3.프로그램의 구조화
메서드의 선언과 구현
반환타입 메서드이름(타입변수명)
{
}
메서드의 호출
메서드의이름(값1,값2...);
return문
실행중인 메서드를 종료하고 호출한 메서도르 되돌아간다.
int max(int a , int b){
if(a>b)
return a; // 조건식이 참일때만 실행되서 에러. -> 거짓일때도 실행.
}
수정
int max(int a, int b){
if(a>b)
return a; //조건식이 참일때 실행된다.
else
return b; //조건식이 거짓일때 실행된다.
호출스택
호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다.
기본형매개변수와 참조형 매개변수
기본형매개변수 :변수의 값을 읽기만가능.
참조형매개변수 : 변수의값을 읽고수정가능.
참조형반환타입
반환하는 값의 타입이 참조형.
반환타입이 참조형이라는것은 메서드가 '객체의 주소'를 반환한다는것을 의미한다.
클래스메서드와 인스턴스메서드
클래스메서드(static메서드)는 인스턴스 변수를 사용할 수 없다.
반면에 인스턴스변수나 인스턴스메서드에서는 static이 붙은 멤버들을 사용하는 것이 언제나 가능하다. -> 인스턴스 변수가 존재한다는 것은 static변수가 이미 메모리에 존재한다는 것을 의미하기때문.
클래스 멤버와 인스턴스 멤버간의 참조와 호출
클래스멤버가 인스턴스 멤버를 호출하고자 하는경우에는 인스턴스를 생성해야한다
이유:인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을수도 있기 때문이다.