2022.09.22 (목요일)

yeonicerely·2022년 9월 22일
0

1.선택문

if 문

if (조건문){
	조건이 참이면 실행할 영역
}
  • if문에 속한 문장이 하나일 경우 중괄호({}) 생략 가능,

if else 문

else if 문

switch문


2. 클래스와 객체(인스턴스)


3. 메소드(함수)

  • 메소드(함수): 입력(인수)을 받아서 처리하거나 결과를 반환하는 것
  • 메소드는 메모리에서 반드시 4 byte를 차지한다
  • JVM은 반드시 main method를 가장 먼저 실행한다.
  • 메소드(참조형)은 메모리에서 주소값을 가진다.

1) 메소드의 사용: 함수를 만든 뒤 집어넣는다

A. 메소드 정의


public static void hiEveryone(int age){
	System.out.println("좋은 아침입니다");
    System.out.println("제 나이는 "+age+"세 입니다".);
} 
  • age는 매개변수

B. 메소드 호출

public static void main(String[] args) {
	hiEveryone(20); 
	}
  • 20은 인수

C. 메소드 종류

1) void/return

a. void 메소드: 결과값을 반환하지 않는 메소드(return이 없음)
-> 함수명 앞에 데이터 타입을 void로 설정

b. return 메소드: 결과값을 반환하는 메소드(return 값이 있음)
-> 함수명 앞에 return 값의 데이터 타입을 적어줌

public double circleArea(double radius){
	return Math.PI*radius*radius;
}

2) 클래스 타입/ 인스턴스 타입

a. 클래스 타입: static이 붙은 경우
b. 인스턴스 타입: static이 붙지 않은 경우



2) 메소드 관련 예제

  • 메모리에서 어떻게 처리되는지 유의하기

A. 글자 출력하기


public static void printString(String str){
	System.out.print(str);
}

public static void main(String[] args){
	
    // 1번
    String str1 = "Happy";
    String str2 = "Birthday";
    
    
    // 2번
    printString(str1);
    printString(str2);
}

  • 1번이 실행되면 str1가 메모리에 형성되고, 값에 Happy의 주소값이 할당됨
  • 2번이 실행되면 str가 형성되고 Happy의 주소값이 할당됨
    -> 그 후 main에서 Happy라는 값을 뿌려주면 메모리에서 str은 사라짐

cf)
Q. 왜 main 메소드는 String[] 형태의 매개변수를 갖나요?
A.


B. 사각형 넓이 구하기

A)

class Rectangle {

	double width;
	double height;

	public void setWidth(double widNum) {

		width = widNum;
	}

	public void setHeight(double heiNum) {

		height = heiNum;
	}

	public double getArea() {
		return width * height;
	}

}

public class Example4 {

	public static void main(String[] args) {
		
        // 1번
        Rectangle rec = new Rectangle();
		
        
        rec.setWidth(10);
		rec.setHeight(10);

		System.out.println(rec.getArea());
        
        // 2번

		rec.setWidth(20);
		rec.setHeight(20);

		System.out.println(rec.getArea());

	}

}

  • rec.setWidth(20)이 되면 setWidth()의 시작번지로 가서 width의 값을 20으로 바꾼다

B)

class Rectangle {

	double width;
	double height;

	public void setWidth(double widNum) {

		width = widNum;
	}

	public void setHeight(double heiNum) {

		height = heiNum;
	}

	public double getArea() {
		return width * height;
	}

}

public class Example4 {

	public static void main(String[] args) {
		Rectangle rec = new Rectangle();
		Rectangle rec2;
		
		rec2 = rec;
		
		rec2.setWidth(10);
		rec2.setHeight(10);

		System.out.println(rec2.getArea());
		System.out.println(rec.getArea());

	}

}
  • rec와 rec2는 똑같은 주소 값을 가진다
    -> rec를 이용해 값을 변경하는 경우, rec2를 이용해 변경하는 경우 모두 Rectangle에 있는 값을 변경한다

  • new Rectangle(): heap이라는 메모리에 Rectangle를 올린다
    -> 인스턴스(객체) 형성

C)

class Rectangle {

	double width;
	double height;

	public void setWidth(double widNum) {

		width = widNum;
	}

	public void setHeight(double heiNum) {

		height = heiNum;
	}

	public double getArea() {
		return width * height;
	}

}

public class Example4 {

	public static void main(String[] args) {
		Rectangle rec = new Rectangle();
		Rectangle rec2 = new Rectangle();
		
		
        rec.setWidth(10);
		rec.setHeight(10);
        
		rec2.setWidth(20);
		rec2.setHeight(20);

		System.out.println(rec.getArea());
		System.out.println(rec.getArea());

	}

}
  • 동일한 메소드(Rectangle)를 이용하여 rec, rec2에 해당하는 별개의 인스턴스 형성
    -> rec를 이용해 값을 변경하는 경우와 rec2를 이용해 값을 변경하는 경우가 다르다

0개의 댓글