자바

이정규 (가지마)·2022년 12월 12일
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변수가 이미 메모리에 존재한다는 것을 의미하기때문.

클래스 멤버와 인스턴스 멤버간의 참조와 호출
클래스멤버가 인스턴스 멤버를 호출하고자 하는경우에는 인스턴스를 생성해야한다
이유:인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을수도 있기 때문이다.

profile
"꾸준함이 답이다."

0개의 댓글