TIL_230603

지인·2023년 6월 3일
0

TIL

목록 보기
16/38

🐰 강의 들은 걸 정리하지 않고 바로 개인 프로젝트를 시작했더니 코드가 지저분 해졌고 배운 내용을 잘 활요하지 못한 느낌이였다. 그래서 머리와 블로그에 정리하고 팀 프로젝트를 시작해보려 한다.

🐰 변수

  • 변수의 선언 위치로 변수의 종류를 결정

  • 클래스 변수 (클래스 영역) : 클래스가 메모리에 올라갈 때

  • 인스턴스 변수 (클래스 영역) : 인스턴스가 생성되었을 때

  • 지역 변수 (클래스 영역 이외의 영역) : 변수 선언문이 수행되었을 때

  • static이 붙은 것은 클래스 변수, 분지 않은 것은 인스턴스 변수이다.

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

클래스 변수와 인스턴스 변수 예제

public void main(String[] args) {

        // 클래스 변수 (static 변수)는 객체생성 없이 '클래스 이름.클래스 변수'로 직접 사용 가능
        System.out.println("Card.width = " + Exmple.width);
        System.out.println("Card.height = " + Exmple.height);

        // Exmple 인스턴스인 e1과 e2는 클래스 변수인 width, height를 공유하기 때문에, 
        // e1의 width와 height를 변경하면 e2의 width와 height값도 바뀐 것과 같은 결과
        Exmple e1 = new Exmple();
        e1.kind = "kind1";
        e1.number = 1;

        Exmple e2 = new Exmple();
        e2.kind = "kind2";
        e2.number = 2;

        // Exmple.width, e1.width, e2.width는 모두 같은 저장공간을 참조하므로 항상 같은 값
        e1.width = 50;
        e1.height = 100;
    }

    class Exmple {
        String kind; // 인스턴스 변수
        int number; // 인스턴스 변수
        static int width = 100; // 클래스 변수
        static int height = 250; // 클래스 변수
    }

🐰 메서드

     🥕 특정 작업을 수행하는 문장들을 하나로 묶은 것

int add(int x, int y) {
    int result = x + y;
    return result; // 결과를 반환
}
  • int : 반환타입 (출력)
    add : 메서드 이름
    int x, int y : 매개변수 선언 (입력)


반환타입 (return type)

  • 메서드의 작업수행 결과 (출력)인 '반환값'의 타입

  • 반환값이 없는 경우 반환타입으로 void를 적는다


    메서드 호출

    메서드 이름(1,2, ...); // 메서드를 호출하는 방법
    print99danAll(); // void print99danAll();을 호출
    int result = add(3, 4); // int add(int x, int y)를 호출하고, 결과를 result에 저장

    인수(argument)

  • 메서드를 호출할 때 괄호() 안에 지정해준 값들을 '인수' 또는 '인자'라고 한다.

  • 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 한다.


    매개변수

        🥕 기본형 매개변수

  • 변수의 값을 읽기만 할 수 있다. (read only)

    🥕 참조형 매개변수

  • 변수의 값을 읽고 변경할 수 있다. (read & write)

  • 인스턴스의 주소가 복사된다.


    static

  • 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.

  • 클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.

  • 클래스 메서드는 인스턴스 변수를 사용할 수 없다.

  • 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.

  • static 메서드는 인스턴스 메서드를 호출할 수 없다.

🐰 생성자(constructor)

  • 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'
  • 조건
    • 생성자의 이름은 클래스의 이름과 같아야 한다.
    • 생성자는 리턴 값이 없다.
  • 생성자도 오버로딩이 가능하므로 하나의 클래스에 여러 개의 생성자가 존재할 수 있다.
클래스이름(타입 변수명, 타입 변수명, ... ) {
	// 인스턴스 생성 시 수행될 코드,
    // 주로 인스턴스 변수의 초기화 코드를 적는다.
}

기본 생성자

  • 매개변수도 없고 아무런 내용도 없는 아주 간단한 생성자
클래스이름() {}

매개변수가 있는 생성자

class Car {
	String color;
    String gearType;
    int door;
    
    Car() {} // 기본 생성자
    
    Car(String c, String g, int d) { // 매개변수가 있는 생성자
    	color = c;
        gearType = g;
        door = d;
    }
}
profile
열쩡

0개의 댓글