티스토리 뷰

Algorithm/Java

자바 기본편 - 용어 정리

JJIINDOL 2023. 2. 13. 22:14

강의를 듣다보니 익숙하지 않은 용어들이 계속 나오는데 헷갈릴 때 마다 찾아보는건 시간이 오래걸려 이번에 정리를 해 보겠다. 정리해 볼 개념은 "변수의 종류", "클래스", "생성자", "this" 이다.

 

✨ 변수의 종류

 - 자바에서 변수는 인스턴스 변수(iv), 클래스 변수(cv), 지역 변수(lv)로 나눌 수 있다. 변수의 종류를 결정짓는 요소는 '변수가 선언된 위치' 이므로 클래스 영역과 메소드 영역을 잘 구분해 변수를 구분할 수 있어야 한다.

public class test {

	int iv; // 인스턴스 변수
	static int cv; // 클래스 변수
	
	void method() {
		int lv; // 지역 변수
	}
}

위 코드에서 모두 int형 변수가 선언 되었는데, 각각의 역할이 다르다. iv와 cv는 클래스 내에 선언되어 있으니 멤버 변수이고, 그 중 cv는 static으로 선언 되었으므로 클래스 변수, iv는 인스턴스 변수이다. 메소드 내에 선언된 lv는 지역변수이다. 그럼 세 변수의 차이점에 대해 알아보자.

< 인스턴스 변수 >

- 인스턴스 변수는 인스턴스가 생성될 때 생성된다. 그러므로 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 한다. 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야 할 때 인스턴스 변수로 선언한다. 클래스 전체에서 사용이 가능하다.

 

< 클래스 변수 >

- 클래스 변수는 인스턴스 변수에 static만 붙여주면 된다. 고유한 값을 가지는 인스턴스 변수와 다르게 클래스 변수는 모든 인스턴스가 공통된 값을 공유하게 된다. 또한, 인스턴스를 생성하지 않고 클래스 이름.클래스 변수명을 통해 접근한다는 차이도 있다.

 

< 지역 변수 >

- 메소드 내에서 선언되며 선언된 위치부터 메소드 종료시까지 유효한 변수이다. 메소드가 실행될 때 메모리를 할당 받으며 메소드가 끝나면 소멸되어 사용할 수 없게 된다. 지역변수는 다른 변수와 다르게 사용하기 전에 초기화하지 않으면 컴파일 시 오류가 발생한다는 특징이 있다.

 

✨ 클래스

 - 개념: 자바에서 클래스란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다.  이 설계도를 가지고 여러 객체를 생성하여 사용한다. 클래스는 객체의 상태를 나타내는 필드와 행동을 나타내는 메소드로 구분된다. 필드란 클래스에 포함된 변수를 의미하고 메소드란 특정 작업을 수행하기 위한 명령문의 집합을 의미한다.

 

 - 사용법: 클래스를 사용하기 위해 해당 클래스 타입의 객체를 선언해야 한다. 이렇게 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스화 라고 한다. 또한, 이렇게 선언된 해당 클래스 타입의 객체를 인스턴스(instance)라고 한다. 즉, 인스턴스란 메모리에 할당된 객체를 의미한다. 

 

 - 구성 요소: 클래스는 멤버로 속성을 표현하는 필드와 기능을 표현하는 메소드를 가진다. 또한, 클래스는 생성된 객체의 필드를 초기화해주는 특별한 메소드인 생성자를 가진다.

class Car {                    // 클래스 이름

    private String modelName;  // 필드
    private int modelYear;     // 필드

    Car(String modelName, int modelYear) { // 생성자
        this.modelName = modelName;
        this.modelYear = modelYear;
    }

    public String getModel() { // 메소드
        return this.modelYear + "년식 " + this.modelName + " " + this.color;
    }
}

 

✨ 생성자(constructor)

 - 생성자는 객체가 생성될 때 자동으로 호출되는 특수 목적의 메소드로 객체의 초기화를 위해 사용된다. 생성자의 이름은 해당 클래스의 이름과 같아야 한다. 즉, JavaStudy 클래스의 생성자의 이름은 JavaStudy가 된다. 생성자는 몇가지 특징을 가지는데 다음과 같다.

 

1. 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.

2. 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.

3. 생성자도 하나의 메소드이므로, 오버로딩이 가능하다.

 

✨ 생성자의 선언

1. 클래스이름() { ... }                  // 매개변수가 없는 생성자 선언
2. 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언

 

< 예시 >

Car(String modelName, int modelYear, String color, int currentSpeed) {

    this.modelName = modelName;
    this.modelYear = modelYear;
    this.color = color;
    this.currentSpeed = 0;
}

 

✨this와 this()

 - this 참조 변수: 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수이다. 이러한 this 참조 변수는 해당 인스턴스의 주소를 가리키고 있다.

class Car {
    private String modelName;
    private int modelYear;
    private String color;
    private int maxSpeed;


    Car(String modelName, int modelYear, String color, int maxSpeed) {
        this.modelName = modelName;
        this.modelYear = modelYear;
        this.color = color;
        this.maxSpeed = maxSpeed;
    }

 > 위 예시처럼 생성자의 매개변수 이름과 인스턴스 변수의 이름이 같을 경우, 인스턴스 변수 앞에 this 키워드를 붙여 구분해야 한다. 이렇게 this 참조 변수를 사용해 인스턴스 변수에 접근할 수 있다. this 참조 변수의 사용 가능 영역은 인스턴스 메소드뿐이며, 클래스 메소드에서는 사용할 수 없다. 

 

 

 - this() 메소드:  같은 클래스의 멤버들끼리 서로 호출할 수 있는 것처럼 생성자 간에도 서로 호출이 가능하다. 여기서 생성자의 이름으로 클래스 이름 대신 this를 사용하며, 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

class Birth {
		int year;
		int month;
		int day;

		Birth(int year, int month, int day) {
			this.year = year;
			this.month = month;
			this.day = day;
		}

		Birth() {
			this(1998, 06, 04); // 같은 클래스 내 다른 생성자 호출.
		}
		
		void pr() {
			System.out.println(year + "." + month + "." + day);
		}
	}

	public class Prac {

		public static void main(String[] args) {
			Birth b = new Birth();
			b.pr();
		}
	}

 

'Algorithm > Java' 카테고리의 다른 글

자바 기본편 - 접근 제어자  (0) 2023.02.20
자바 기본편- Getter 와 Setter  (0) 2023.02.18
자바 기본편 - 메소드 퀴즈  (0) 2023.02.10
자바 기본편 - 오버로딩  (0) 2023.02.09
자바 기본편 - 전달값과 반환값  (0) 2023.02.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함