본문 바로가기

국비과정/JAVA (기초)

20230601 _[1일차]_03. 클래스 & 메소드

[Syntax01]

package june01;
// 기본적으로 클래스가 외부에 존재해야 합니다.
// 클래스 : 자바의 객체단위
public class Syntax01 { // 클래스 시작
	// 메소드 : 기능 실행 단위
	public static void main(String[] args) { // 메소드 시작
		// 여기는 클래스 범위이기도 하고 메소드 범위입니다.
		// 메소드는 클래스 속에 있어야 합니다.
	} // 메소드 끝
} // 클래스 끝
// 자동정력 ctrl + shft + f : 단, 에러가 없을 때만 동작

[Syntax02]

package june01;

public class Syntax02 {
    public static void main(String[] args) {
		// 명령어 : 메소드 속에 들어가 있어야 합니다.
		String str = "메소드 속에서...";   // str 변수 선언
		str = "변경합니다";                // 변수 변경
		System.out.println(str);           // 변수 출력 
	}
 }

명령어는 세미콜론(;)으로 끝나야함

 

package june01;

public class Syntax02 {
    public static void main(String[] args) {
		// 명령어 : 메소드 속에 들어가 있어야 합니다.
		// 선언, 대입, 초기화, 명령   ->  ;(세미콜론)으로 끝나야함
		int number = 10;            // 변수 선언 = 초기화
		number = 100;               // 대입
		System.out.println(number); // 변수 출력
	}
 }

클래스는 'class  + (대문자)로시작'
메소드는 괄호앞이 이름 -> main(String[] arg) : 메인메소드
그아래 명령어 (들여쓰기로 구분)

 

package june01;

public class Syntax02 {

	int num() {
		return 1;
	}

	void add() {

	}

	static void sum() {

	}

	public static void print() {
		System.out.println("프린트 메소드 입니다.");
	}

	public static void main(String[] args) {
		int number = 10; number = 100; 
		System.out.println(number);  // 변수 출력
		
		print();                     // 프린트 메소드 호출하기		
	}

}
100
프린트 메소드 입니다

 

Syntax02 클래스 안에 num, add, sum ..등등 여러개의 메소드 가능. (메소드 => 함수로 이해)

메소드들의 실행순서는 해당 클래스의 메인부터 시작

메인 메소드 실행이 끝나면 종료되고, 다른 메소드들은 실행되지 않음 (순서는 상관없음)

다른 메소드 실행하려면 별도로 호출필요 -> 메인메소드 내부에 print(); 로 호출


* static 없는 메소드들은 호출방법 다름 (나중에다시..)

package june01;

public class Syntax02 {

	int num() {
		return 1;
	}

	public static void main(String[] args) {
		Syntax02 s2 = new Syntax02();
		s2.num();   // non static  인스턴스명.num() 호출
	}
}

[Syntax03]

package june01;

//main 메소드에 적어야 실행됩니다.
class Apple {
	public static void main(String[] args) {
		System.out.println("애플 클래스 속 메인 메소드");
	}
}

public class Syntax03 {
	public static void main(String[] args) {
		System.out.println("출력문");
		
		add(10, 20); // 메소드 호출
	}
	static void add(int num1, int num2) {
		System.out.println(num1 + num2);
	}

}
출력문
30

클래스 이름 대조  ->  해당 클래스(Syntax03)의 메인 메소드를 찾아 실행
Apple 메소드는 실행안됨.


Q&A

Q) 메소드에서 선언된 변수들은 다 매개변수 args에 저장되는 건가요?

 

A) main메소드의 경우가 그렇습니다. 나중에 나올 배열이라는 기능이 거기에 더 추가됩니다.
만약 adde(int num1)라고 한다면 num1에 저장됩니다.

 

 

Q) 그럼 메소드 안에서 선언된 변수들은 다 ()안에 있는 매개변수에 저장되는건가요?

 

A) 일부는 맞는 말입니다.
void age(String str){
    String name="홍길동";
}
이라고도 할 수 있습니다.
파라미터는 프로그램 실행시 받는 값들이고, 메소드 속에서는 다른 이름으로 생성해서 사용하시면 됩니다.

 

 

Q) 아까 저희가 배운 int number에서 값을 변경하였었는데 그 때는 왜 int를 넣지 않는건가요?

 

A) 변수를 사용하기 위해서는 선언이라는 작업이 필용합니다. 

선언시에는 앞에 데이터타입(int같은거)를 적어주고 '변수명 = 값' 으로 씁니다.
int 변수명 = 100;

활용할때는 데이터타입을 적지 않고 바로 변수를 적어줍니다.
변수명 = 1000;