[K-digital] Today I Learned #6

Bella·2021년 8월 24일
0

java

목록 보기
3/5

Today I Learned, Java의 클래스, 메서드, 인스턴스 생성.
객체 지향의 세계로!


그 전에,,,갑자기 잘 열리던 SpringToolSuite4가 권한 문제가 뜨면서 열리지 않았다... (조마조마, 알다가도 모르겠는 맥,,)

이게 머선 일이고,,?
애플 지원에 전화를 해보았지만 문제 해결이 아닌 관리자 계정을 하나 더 만들어서 거기에서 설치를 해보라고 알려주시길래,
일단 내가 해결해보자 싶어서 급한대로 폭풍 구글링.
[macOS] Big sur에서 권한이 없다며 어플리케이션이 안열리는 경우의 해결


요렇게 인증서 서명을 강제로 넣어주니까 실행됐다ㅠ,ㅠ (다행쓰,,)


수업 +'Do it 자바프로그래밍 입문' 책을 읽고 참고하여 정리하였습니다.

1. Class

클래스란 객체의 속성과 기능을 코드로 구현한 것,
객체를 클래스로 구현한다 라는 것은 클래스를 정의한다 라는 것과 동치라고 한다.

(접근 제어자) class (클래스이름) {
   멤버 변수;  //클래스의 속성을 뜻함
   메서드;
 }

와 같이 클래스를 정의할 수 있다.

2. Method

메서드란 클래스 내부에서 사용하는 멤버 함수로, 멤버 변수를 사용하여 클래스의 기능을 구현하는 친구다.
잘 만들어 놓으면 필요할 때마다 호출하여 사용할 수 있다.:-)

(함수 반환형) (함수 이름) (매개변수) {
   멤버 변수;
   return (반환값);
}

와 같이 메서드를 정의할 수 있는데
오늘 해본 예제 중 하나를 작성해보겠다.

public void avg(int[] datas) {
        double tot = 0;
        int avg;
        for (int i = 0; i < datas.length; i++) {
            tot = tot + datas[i];
        }
        avg = (int) (tot / datas.length);

        System.out.print("요소의 개수:" + datas.length + "/ ");
        System.out.println("평균:" + avg);
        System.out.println("----------------------");
        return;

요렇게 매개변수에는 배열도 입력할 수 있다!!
수업 시간에는 return 예약어에 대해 따로 언급은 안 하셨는데
책을 보니 꽤나 중요할 거 같아 정리를 해본다.

2-1. return

return 은 이 함수의 결과 값을 반환합니다. 라는 뜻으로
함수 수행을 끝내고 프로그램 흐름 중에서 호출한 곳으로 다시 돌아갈 때 사용할 수 있다고 한다.

void divide(int a, int b){
  if(b==0){
    System.out.println("0으로 못 나눔");
    return; //함수 수행 종료
  }
  else{
    int result = a / b;
    System.out.println("결과는 "+result+"입니다.);
  }
}

와 같은 상황에서 b가 0이라면 수행 종료하고 다시 호출한 곳으로 컴백!
함수를 호출하면 그 함수만을 위한 메모리 공간, 스택(Stack)이 할당된다. 수행이 끝나면 그 함수가 사용하던 메모리 공간은 자동으로 사라진다.

3. 객체

객체란, 의사나 행위가 미치는 대상을 말한다. (한 국 말 어 려 웡)
이를 구현한 것이 클래스이다.

3-1. new 예약어

클래스를 생성할 때에는 new예약어 를 쓴다.
클래스를 생성한다? 클래스를 실제 사용할 수 있도록 메모리 공간(힙)을 할당 받는다는 뜻!!
이렇게 실제로 사용할 수 있도록 생성된 클래스가 바로 인스턴스

학생 (객체) --정의--> Student 클래스(student ID, grade, etc..) --생성--> student1 (인스턴스)

[클래스형] [변수이름] = new [생성자];

클래스형 변수를 생성하는 코드로 아래 예시를 보자.

Student student1 = new Student();

Student 클래스 자료형으로 student1 변수를 선언하고 new Student()로 Student 클래스를 생성하여 student1에 대입한다는 뜻!
이 때, student1을 참조변수 라고 한다.

3-2 인스턴스와 힙 메모리

인스턴스가 생기는 과정,
new Student()를 선언하면 Student 하나가 생성되는데 각 Student는 멤버변수를 가지고 있다. 이들 변수를 저장하기 위해 사용하는 공간이 바로 힙 메모리이다.
즉, 클래스 생성자를 하나 호출하면 인스턴스가 힙 메모리에 생성된다.

Student student1 = new Student();

예시처럼 student1 변수에 생성된 클래스를 대입하면 인스턴스가 저장된 메모리를 student1 변수가 가리킨다. 즉, student에 인스턴스가 생성된 힙 메모리의 주소를 대입하게 된다는 의미이다.


오늘의 오늘 : 오늘도 많은 실습과 진도를 나갔다. 여러 번 보았던 Java인데도,,, 제대로 아는 게 하나 없다는 생각을 했다.
지금에서라도 배우게 되어서 다행이야!!

profile
꾸준히 배우는 삶, 개발자로

0개의 댓글