오봉이와 함께하는 개발 블로그
DAY_6 본문
728x90
day_6 정리 (2021.11.08 월요일)
클래스
- 변수와 메소드들의 집합
- 하나의 클래스는 여러 개의 변수와 메소드를 가지게 된다.
- 클래스를 설계할 때 메소드와 변수를 잘 모아서 표현하는 것이 중요하다.
메소드
- 함수라고도 한다.
- 함수와 기능적 차이는 없다고 봐도 무방
- 자바는 반드시 클래스가 있어야 하기 때문에 자바에서는 전부 메소드라고 표현한다.
- 프로그래밍 언어에서는 프로그램을 이루는 기본 단위
- 명령어들의 집합
- 소스코드의 관리 편의성을 위해(재사용성) 개발됨.
- 메소드를 정의하면 무한하게 호출하여 사용할 수 있다.
- 호출할 때 메소드의 원형을 그대로 따라야 한다.
- 선언된 형태에 따라서 필요한 값을 호출할 때 순서, 타입, 갯수를 정확하게 명시해야 한다.
- 자바에서 메소드의 기본 형태
[반환타입] [메소드 이름] (타입 변수명, 타입 변수명, ...) {
메소드 블록
}
- 자바에서 main 메소드는 특별하다.
- 자동으로 실행되기 때문.
- 모든 코드는 main부터 실행 시작된다.
- 나머지는 직접 실행 시켜줘야 한다.
- 이를 메소드 호출이라 한다.
메소드는 언제 실행 되는가
- 호출할 때 실행된다.
- 메소드의 실행은 메소드를 위한 공간이 메모리에 만들어짐을 의미
- 메소드는 실행되는 동안 메소드 고유의 메모리 영역을 갖는다.
- 이것을 콜스택(호출스택)이라 부름.
- 메소드를 위한 메모리는 구분되는 공간이다.
- 메소드와 메소드끼리는 원칙적으로 메모리 공간을 침범할 수 없다.
- 해킹을 통해서는 가능.
- 메소드는 실행되는 동안 메소드 고유의 메모리 영역을 갖는다.
메소드는 언제 종료 되는가
- 메소드 블록 내에 더 이상 실행 할 코드가 없으면 자동으로 종료
- 'return'이 수행되면 종료
- 메소드의 종료는 메모리의 삭제를 뜻한다.
- 메소드가 실행 중 사용했던 모든 메모리가 반남
- 남아 있지만 참조는 불가능
자바의 변수 종류
- 클래스 변수
- 인스턴스(객체) 변수
- 지역 변수
- 메소드 내에서 선언(정의)된 변수
- Parameter도 지역변수
- 지역 변수는 메소드의 범위를 벗어날 수 없다.
타입에 따른 입력값 전달
- 자바에서의 변수 종류
- 기본형(boolean, byte, char, short, int, float, double)
- 참조형(String, Array, ...)
public class Method {
// 가장 기본적 형태의 메소드
// 입력도, 출력도 없다
// 자바에서는 클래스 내부에서 선언된다.
static void method() { // 메소드 정의 Callee 피호출자
// return 값이 없는 메소드는 void
System.out.println("메소드가 실행됐다.");
}
// 다양한 형태의 메소드
// 1. 입력이 있는 메소드(Parameter(매개변수), argument(인자)
// 메서드 실행에 필요한 입력값을 미리 정의
// 개수의 제한은 없지만 많으면 많을 수록 속도가 느려진다.
static void add(int x, int y) {
System.out.println(x + y);
}
// 2. return이 있는 메소드
// 메소드가 끝나면 돌려주는 값이 존재하는 메소드
// 돌려줄 값이 없어도 메소드가 잘 종료됐는지 등을 위해 값을 반환하는 것이 좋다.
// 메소드 선언할 때 정의한 타입과 실제 리턴되는 값의 타입은 반드시 일치해야 한다.
static int add2(int x, int y) {
return x+y;
}
/*=======================================================*/
public static void main(String[] args) {
System.out.println("main 메소드 실행");
// 메소드는 실행 전 까지는 실행되지 않는다.
method(); // Caller 호출자
add(3,4);
// 메소드가 돌려주는 값을 받아서 처리해야 한다.
int re = add2(10, 20);
System.out.println(re);
System.out.println(add2(1,2));
}
}
728x90
Comments