공부일지

231010 (Java)

CD가참둥그렇다 2023. 10. 10. 17:57

복습 테스트

  • CarMain클래스를 추가하고 메인에 car 클래스 인스턴스화
  • car 클래스에 아무 속성 추가 후 메인에서 값 할당 및 출력
  • car 클래스에 아무 속성을 꼭 입력 받아야만 생성되게 생성자 메소드 구현
public class Car {
	String name;
	int type;
	String memo;
	public Car(String name, int type) {
		this.name = name;
		this.type = type;
	}
}
public class CarMain {
	public static void main(String[] args) {
		Car car = new Car("차 이름", 123);
		car.memo = "메모메모";
		System.out.println(car.name);
		System.out.println(car.type);
		System.out.println(car.memo);
	}
}

메소드

  • 클래스 중괄호 사이에 있는 모든 것들 = 멤버
  • 그 중 변수 클래스 등등으로 선언 되어 있는 것 = 필드, 속성, 인스턴스 변수, iv
  • 기능을 담당하는 것은 메소드라고 함
  • 메소드의 선언
    • 접근 제한자 : public, private, default, protected
      • 접근 권한에 따라 우측이 더 제한된 접근을 허용함
    • 리턴 타입 : void, 혹은 변수 타입 = 반환할 타입을 지정한다.
    • 접근 제한자 → 리턴 타입 → 메소드 명 → ()매개변수, 파라미터 → {코드}
  • 파라미터가 여러 개인 경우 나열을 통해 투입할 수 있다.

void 메소드 테스트

  • 메소드 3, 4 구현하기
  • 문자열과 숫자를 입력 받아 출력하는 메소드를 만들기
  • 숫자를 입력 받아 해당하는 숫자만큼 콘솔창에 출력이라는 글자를 출력하는 메소드 만들기
public class Car {

	public void cdMethod() {
		System.out.println("void는 return 타입이 없다.");
		System.out.println("현재 메소드는 클래스의 블럭킹 내부에 있다.");
		System.out.println("cdMethod는 클래스의 멤머, 인스턴스 멤버");

	}

	public void cdMethod1(String name) {
		System.out.println(name + " 이(가) 공부 중");
	}
	public void cdMethod2(String name, String state) {
		System.out.println(name + " 이(가) "+state+" 중");
	}
	public void cdMethod3(String name, int price) {
		System.out.println(name + "의 가격은 "+price+"원 입니다.");
	}
	public void cdMethod4(String name, int stock) {
		System.out.println(name + "의 재고는 "+stock+"개 입니다.");
	}
	public void cdMethod5(int num) {
		for (int i=0; i<num; i++) {
			System.out.print("출력");
			if (i==num-1) {
				System.out.println();
			}
		}
	}
}
public class CarMain {
	public static void main(String[] args) {
		Car car = new Car();
		car.cdMethod();
		System.out.println();
		car.cdMethod1("박찬영");
		System.out.println();
		car.cdMethod2("누군가", "휴식");
		System.out.println();
		
		car.cdMethod3("자동차", 10000000);
		car.cdMethod4("자동차", 13);
		car.cdMethod5(10);
	}
}

반환 값이 있는 메소드

  • Calculator 클래스를 만들고 기능 4가지 구현하기
  • 기능 1. .plus 두 수를 입력 받아 두 수의 합을 바로 출력하는 메소드 반환x
  • 기능 2. .minus 두 수를 입력 받아 두 수의 차를 바로 출력하는 메소드 반환x
  • 기능 3. mul 두 수의 곱을 메소드 호출부로 반환. 출력은 메인에서
  • 기능 4. div 두 수의 나누기 몫을 메소드 호출부로 반환. 출력은 메인에서
public class Calculator {
	public void plus(int a, int b) {
		System.out.println(a+b);
	}
	public void minus(int a, int b) {
		System.out.println(a-b);
	}
	public int mul(int a, int b) {
		return a*b;
	}
	public int div(int a, int b) {
		return a/b;
	}
}
public class CalculatorMain {
	public static void main(String[] args) {
		Calculator calc = new Calculator();
		int a = 5;
		int b = 2;
		calc.plus(a, b);
		calc.minus(a, b);
		System.out.println(calc.mul(a, b));
		System.out.println(calc.div(a, b));
	}
}

메소드의 테스트

  • 컴퓨터의 전원에 따라 실행, 혹은 오류 메세지를 출력하도록 한다.
public class Computer {
	
	boolean isPower;
	public void power() {
		isPower = !isPower;
		System.out.println("전원"+isPower);
	}
	public void plus(int a, int b) {
		if (isPower) {
			System.out.println(a+b);
		} else {
			System.out.println("컴퓨터의 전원을 켜주세요");
		}
	}
}
public class ComputerMain {
	public static void main(String[] args) {
		Computer com = new Computer();
		int a=5, b=2;
		com.plus(a, b);
		com.power();
		com.plus(a, b);
	}
}

멤버

  • 멤버는 스태틱과 인스턴스로 구분됨.
  • 스태틱 키워드가 있으면 스태틱 없다면 인스턴스로 구분된다.
  • 인스턴스는 인스턴스화를 거쳐야 사용 가능, 스태틱은 항상 사용 가능
  • 인스턴스의 접근 방식 class.을 이용
  • 스태틱의 접근 방식 Class.이 이용 방식(인스턴스 없이 바로 사용 가능)
  • 스태틱은 메모리를 많이 잡아먹는다. 가급적 사용을 줄여야 한다.
  • 스태틱 메소드 내부에 인스턴스 멤버를 포함시킬 수 없다.
public class Member {
	int iField;
	static int sField;
	public void iMethod() {
		System.out.println(iField + "인스턴스 메소드" + sField);
	}
	public static void sMethod() {
		System.out.println("스태틱 메소드"+sField);
	}
}
public class MemberMain {
	public static void main(String[] args) {
		System.out.println(Member.sField);
		Member.sMethod();
		Member mem = new Member();
		System.out.println(mem.iField);
		mem.iMethod();
	}
}