자바 용어 정리

자두·2026년 9월 15일

JAVA

목록 보기
2/8

예제)

class Character { 

    String name;
    int level;

    void showInfo() {
        System.out.println(name + " / " + level);
    }
}

Character라는 것을 만들 건데,
이름과 레벨을 가지고 있고,
자기 정보를 보여줄 수 있다.

class Character {
    String name;
    int level;
}

이건 캐릭터 한 명을 만든 게 아니고,
그냥 캐릭터를 어떻게 만들 것인지 적어놓은 설명서이다.
마치 게임 개발자가 캐릭터는 이름이 있어야 하고, 레벨이 있어야 한다고 정해놓은 것.

객체

Character c = new Character();

여기서 드디어 실제 캐릭터 하나가 만들어진다.
new를 통해 실제로 만들어진 하나라고 생각하면 됨.

참조변수

c ──────────→ 🧑 캐릭터 하나

c는 캐릭터 자체가 아니라 그 캐릭터를 찾아갈 수 있는 변수이다.
참조변수는 "저 캐릭터(객체) 가리키고 있는 변수"라고 생각하면 됨.

멤버변수

String name;
int level;

Character라는 클래스의 멤버로 들어가 있는 변수이기 때문에 멤버변수.

Character 객체
┌──────────────────┐
│ name = ??? │ ← 멤버변수
│ level = ??? │ ← 멤버변수
└──────────────────┘

쉽게 말하면 객체가 가지고 있는 데이터.

매개변수

class Student {

    // ⭐ 멤버변수 (필드)
    String name;
    int age;

    // ⭐ 매개변수 (parameter)
    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    void introduce(String message) {
        // message → 매개변수
        System.out.println(name + " : " + message);
    }
}

public class Main {
    public static void main(String[] args) {

        // ⭐ 참조변수
        Student student = new Student("하루", 20);

        student.introduce("안녕하세요!");
    }
}
구분코드의미
멤버변수String name객체가 가지고 있는 데이터
int age
매개변수String name메서드/생성자에 값을 전달받는 변수
int age
String message메서드가 호출될 때 전달받는 변수
참조변수Student student객체의 주소(참조)를 저장하는 변수

Student student = new Student("하루", 20);
↑
참조변수

student는 Student 객체를 가리키는 참조변수!

new Student("하루", 20)

이때 "하루"와 20이 생성자(객체(Student)를 만들 때 어떤 값("하루", 20)을 넣어줄지 정하는 코드)에 전달된다.

this.name = name;

"이 객체의 멤버변수 name(왼)에, 매개변수 name(오)의 값을 넣어라."

생성자

Character c = new Character();

c.name = "리쿠";
c.level = 10;
Car c = new Car();

c.color = "빨강";
c.price = 1000;

생성자를 사용하지 않으면 객체 만들 때마다 이렇게 비효율적으로 만들어야 함.

class Character {

    String name;
    int level;

    Character(String name, int level) {
        this.name = name;
        this.level = level;
    }
}

그래서 생성자를 만들어서 하면 효율적임.
이 예제에서는 캐릭터(객체)를 만들 때 어떤 값(이름, 레벨)을 넣어줄지 정하는 코드.

Car c = new Car("빨강", 1000);

만드는 순간 이렇게 값까지 넣을 수도 있음.

그래서

  • 생성자는 클래스 이름과 이름이 똑같고, 반환형이 없다.
  • new로 객체를 만들 때 처음 값을 세팅해주는 것 = 생성자

메서드

name.length();

name → 문자열 객체
length() → 그 문자열이 가지고 있는 기능. 기능의 이름
() → 그 기능을 실행한다
=> "name아, 너 길이 좀 알려줘!"

  • 객체가 할 수 있는 행동을 미리 만들어 놓은 기능.

this

예제)

Student(String name, int age) {
    this.name = name;
    this.age = age;
}

this. name : 객체가 가지고 있는 name
name : 생성자를 호출할 때 전달받은 name
→ "이 객체의 name에 전달받은 name을 넣어라."

Student s = new Student("유우시", 20);

new Student(...)
↓
Student 객체 생성
↓
생성자 실행
↓
name = "유우시"
age = 20

this가 없다면?

class Student {
    String name;

    void setName(String name) {
        name = name;
    }
}

name = name
↑ ↑
??? ???

JAVA 입장에서는 둘 다 똑같은 name.
멤버변수 name인지, 매개변수 name인지 구분할 수가 없다!
그래서 this를 붙이는 것!

this는 항상 필요한가?

class Student {
    String name;

    void setName(String n) {
        name = n;
    }
}

name → 객체의 멤버변수
n → 매개변수

위의 예제와 같이 이름이 겹치지 않는다면 항상 필요한 것은 아니다.

profile
신입 백엔드 개발자 지망하는 취준생!!!

0개의 댓글