자바 day2 - 클래스와 객체1

marongrong·2023년 5월 14일
0
  • 함수 호출과 스택 메모리
    : 함수를 호출하면 그 함수만을 위한 메모리 공간이 할당되는데, 이 메모리 공간을 스택이라고 부름.
    프로그램을 시작할 때 main() 함수부터 호출하기 때문에 main()함수에 포함된 변수 num1, num, sum을 저장할 메모리 공간이 생기고, main()함수에서 add()함수를 호출하면 add()함수를 저장할 메모리 공간이 스택에 생성됨.
    add()함수 수행이 끝나고 결과값이 반환되면 add()함수가 사용하던 메모리 공간은 자동으로 사라짐. 맨 마지막에 추가된 것부터 스택에서 사라짐.

지역변수 = 함수 내부에서만 사용하는 변수.
지역변수는 스택 메모리에 생성됨.

ex) 학생의 이름을 반환하는 메소드 getStudetName()
왜 get이냐? 클래스로부터 값을 get해서 함수에서 반환할거거든

학생의 이름을 부여하는 메소드 setStudentName()
왜 set이냐? 이 함수에서 매개변수를 새로 셋팅해서 전달할거거든
Student클래스를 사용하는 다른 코드에서 학생 이름을 새로 지정하거나 바꾸어 쓸 때.

  • 클래스와 인스턴스
    : main() 함수는 JVM(자바 가상머신)이 프로그램을 시작하기 위해 호출하는 함수. 클래스 내부에 만들지만 클래스의 메소드는 아님.

  • new 예약어로 클래스 생성하기
    : 클래스를 사용하려면 클래스를 생성해야 함.
    클래스가 생성된다는 것은 클래스를 실제로 사용할 수 있도록 메모리 공간(힙 메모리)을 할당받는다는 뜻.
    인스턴스 = 이렇게 실제로 사용할 수 있도록 생성된 클래스.
    참조변수 = 인스턴스를 가리키는 클래스형 변수, 메모리에 생성된 인스턴스를 가리키는 변수. (ex) Student)
    클래스 생성 코드 : 클래스형변수 변수이름 = new 생성자;
    ex) Student studentAhn = new Student();

  • 인스턴스 : 클래스는 하나지만 여러 개의 각각 다른 인스턴스를 생성할 수 있음.

  • 인스턴스와 힙 메모리 : 클래스 생성자를 하나 호출하면 인스턴스가 힙 메모리에 생성됨. 지역변수는 스택 메모리에 생성되고, 참조변수는 힙 메모리에 생성된 인스턴스임.

Q2. 클래스 만들고 결과값 출력하기
나이가 40살, 이름이 James라는 남자가 있습니다. 이 남자는 결혼을 했고, 자식이 셋 있습니다.
<출력결과>
이 사람의 나이
이 사람의 이름
이 사람의 결혼 여부
이 사람의 자녀수

public class Person {
int age;
String name;
boolean isMarried;
int numberOfKid;

public static void main(String[] args) {
	Person person = new Person();
    person.age = 40;
    person.name = "Jennie";
    person.isMarried = false;
    person.numberOfKid = 3;
    
    System.out.pringln("나이 : " + person.age);
    System.out.pringln("이름 : " + person.name);
    System.out.pringln("결혼여부 : " + person.isMarried);
    System.out.pringln("자녀수 : " + person.numberOfKid);
}

}

  • 생성자 :
    Person personLee = new Person();
    클래스를 생성할 때 사용하는 Person() 같은 함수.
    생성자가 하는 일은 클래스를 처음 만들 때 멤버 변수나 상수를 초기화함.
    반환값이 없음.
    생성자가 없는 클래스는 클래스 파일을 컴파일할 때 자바 컴파일러에서 자동으로 생성자를 만들어 줌. (디폴트 생성자)

생성자 오버로드부터 To be Continued...

profile
what moves you makes you

0개의 댓글