inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

기본형 참조형 관련 질문

해결된 질문

448

서정원

작성한 질문수 13

0

기본형과 참조형에 대하여 궁금증이 생겨서 질문을 남깁니다.

public class question {
    public static void main(String[] args) {
        int a = 10;
        doubleNumber(a);
        System.out.println("a = " + a);
    }
    public static void doubleNumber(int x){
        int result = x*2;
        System.out.println("doubleResult = " + result);
    }
}

doubleNumber라는 메서드를 만나게 되면 int x에 a의 값인 10이 복사되어 들어간 다음 2배 증가된 이후 result에 대입이 된 이후 print를 한 뒤에 메서드가 종료되면 result가 사라지는 것으로 알고있습니다.

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

        Student student1 = createStudent("학생1", 15, 90);
        Student student2 = createStudent("학생2", 17, 80);

       printStudent(student1);
       printStudent(student2);
    }
    static Student createStudent(String name,int age, int grade){
        Student student = new Student();
        student.name = name;
        student.age=age;
        student.grade = grade;
        return student;
    }
    static void printStudent(Student student){
        System.out.println("이름:" +student.name+"나이:"+student.age+"성적:"+student.grade);
    }
}

createStudent라는 메서드에서는 student의 참조값을 리턴을 하기 때문에 Student student1=createStudent()를 하게 되면 new Student를 실행한 그 객체의 참조값이 넘어오는 것 까지는 이해를 했습니다. createStudent메서드가 끝나면 메서드 안에 있는 student는 계속 살아있는 것인지 아니면 다른 어떤 것들이 있는지 궁금합니다.

java 객체지향 참조형 기본형

답변 1

4

김영한

안녕하세요. 서정원님

질문을 상대방이 이해하기 쉽게 잘 풀어서 설명해주셨네요 🙂

student 변수도 일반적인 지역 변수 입니다. 따라서 메서드가 종료되면 student 변수도 제거됩니다.

여기서 중요한 것은 student 변수가 제거되는 것이지 new Student로 생성한 Student 인스턴스는 유지됩니다. 그리고 반환된 해당 인스턴스의 참조값은 student1, student2에서 사용됩니다.

감사합니다.

2

서정원

아하 student라는 변수는 제거가 되지만 new Student로 생성된 인스턴스는 유지가 되는군요! new Student를 가리키는 student(참조값)를 return하여 student1,student2에서 사용이 되는것이네요! 감사합니다!

질문있습니다

0

30

1

1번 문제 질문입니다.

0

35

1

음악플레이어 문제 중 코드질문

0

29

1

9장 상속 문제와 풀이 질문

0

39

1

강의 자료에 사소한 오타가 있습니다.

0

50

2

매서드 참조값 반환??

0

67

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

73

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

77

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

67

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

99

1

Method1에서 Student 객체

0

74

1

3강 18. null 질문

0

69

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

77

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

90

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

136

1

기본편 객체지향 프로그래밍에 대한 정의

0

88

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

153

2