메소드
수학의 함수와 비슷하며 호출을 통해 사용
타언어에서 함수와 동일한 기능
메소드 호출 시 전달 값이 있거나 없을 수 있으며, 호출하게 되면 내부에 작성된 연산을 수행하게되며, 연산 후 결과값은 있거나 없을 수 있다.
메소드의 형태(메소드선언방법)
접근제어지시자 리턴타입 반환형메소드명(매개변수) {
실행코드;
}
ex)
public void test1() {
System.out.println("test1 메소드!");
}
접근제어지시자 : 메소드 사용범위를 지정해줌
반환형 메소드명 : 메소드를 수행했을 때 되돌려주는 데이터타입 입력
메소드명 : 메소드이름
매개변수 : (=파라미터) 메소드에게 전달해줘야 하는 값
메소드의 접근제어 지시자(접근제한자)
사용할 수 있는 범위는?
public : 해당클래스내부, 같은패키지, 후손클래스, 전체 = 다른패키지에서도 사용가능 나머지 불가능
protected : 해당클래스내부, 같은패키지, 후손클래스
default : 해당클래스내부, 같은패키지
private : 해당클래스내부
**public, protected, default는 같은 패키지 내에서는 import 안해도 된다!!!
같은 패키지 내에서는 서로 인식이 가능하다.
private는 해당 클래스 내부에서만 쓸 수 있으므로 다른 클래스나 다른범위에서는 사용 불가능!
메소드의 반환형
void : 반환값이 없을 경우
기본자료형 : 반환값이 8가지 기본 자료형일 경우
참조자료형 : 반환값이 참조형 자료형일 경우 (String, 사용자정의)
배열 : 기본형 배열, 참조형 배열 모두 가능
반환값이 있는 반환형일 경우 (void 제외)
return(); 이라는 코드를 꼭 입력해줘야함.
** return은 어떠한 경우에도 리턴이 될 수 있는 코드를 작성해야 한다.
return data; -> data를 되돌려주면서 메소드를 종료
** return 코드는 메소드를 끝내는 코드기 때문에 return 아래에는 코드가 올 수 없다.
리턴타입 알아보기
값을 100이 아닌 다른 정수로 입력했을 때는 다 0이라고 뜬다.
값을 100이라고 입력했을 때만 이렇게 나옴~!
반환형과 리턴값은 꼭 일치해야한다.
중요!!!!!!!!!!!
반환값이 int면 return값도 정수여야 함.
String이면 문자...
메소드의 매개변수
-> 새로만들어진 변수이므로 변수이름은 아무런 영향을 주지 않는다. = 자료형과 순서가 중요!!!
**매개변수의 개수에는 제한이 없으며,
여러개인 경우 ,를 통해서 구분한다.
()
: 매개변수가 없는 것을 의미함
기본자료형
: 기본형 매개변수 사용 시 값을 복사하여 전달
: 메소드에서 해당값을 변경해도 원래 값은 변경되지 않는다.
: call by value
참조자료형 , 배열
: 참조자료형, 배열을 매개변수로 전달 시에는 데이터의 주소값이 전달
: 메소드에서 해당값을 변경하면 원래 값도 같이 변경
: call by reference
이거 코드 보고 이해하기 ㅠㅠㅠㅠㅠ
= 값만 복사해서 전달하기때문에 해당 메소드 내의 값은 변화 없고 다른 메소드에 값만 복사된다.(다른메소드에서 그 값을 변화시켜도 해당 메소드에서 값은 변화 없음)
= 주소값을 복사해서 전달하기 때문에 heap메모리 내의 하나의 인스턴스를 공유하는 모양임!!! 주소값 복사된 메소드에서 값을 변경하면 해당 메소드 값도 변경된다.