언어 공부 내용 정리/Java

자바 메소드

wosrn 2023. 6. 7. 23:56

메소드 형식

 
접근지정자 리턴타입 메소드이름 (메소드 인자들) {
                     //메소드 코드 바디
}
 
ex)public (static) int getSum(int i.int j){
                        int sum;
                        sum = i+j
                        return sum;
}
 

접근 제한자

public : 클래스 내부,외부에서 모두 호출 가능,모든 패키지에서 사용 가능 / 필드와 메소드가 public이면 클래스도 public이어야 한다
 

주의 : public 을 붙였다고 해서 다른 패키지에서 public 메소드를 막 사용할 수 있는 것은 아니다 !
다른 패키지에서 public 멤버를 사용하려면 import 패키지명.클래스명; 을 위에 작성해주어야한다
import는 다른 패키지 내에 있는 클래스를 사용하겠다는 뜻이다
또한 메뉴 보이기는 리턴값이 int 인 메소드이기 때문에 이를 사용하기 위해 리턴값을 담을 변수를 설정해주었다
 
private : 오로지 클래스 내에서만 사용 가능 - 이를 외부에서 접근하려면 getter,setter가 필요함 (자바가 자동으로 만들어줌 (우클릭-소스-제너레이트 메뉴에서 getter setter 클릭))
protected : 같은 패키지 내에서 사용가능, 다른 패키지일때는 상속관계인 클래스에서만 접근허용
default : 패키지 내에서만 public-패키지 내 모든 클래스에 접근 허용
 
+메소드 안에서 선언하 변수는 어차피 지역변수이기 때문에 외부에서 사용이 불가하고, 이 때문에 메소드 안의 변수는 static,public 으로 지정할 수 없다
 

리턴 타입

메소드가 호출자에게 리턴할 값의 타입
리턴값이 없다면 void로 리턴값을 작성
 

메소드 호출

  • 한 클래스 내에선 단순히 메소드 이름으로 호출한다
  • 클래스 외부의 메소드를 호출하는 경우엔 클래스로부터 객체를 생성( 메소드는 객체에 소속된 멤버이므로)한 뒤 참조변수와 도트(.) 연산자를 이용하여 (참조변수.메소드이름()) 메소드를 호출한다
  • 메소드가 리턴값이 없거나, 있어도 받고싶지 않은 경우 단순히 메소드이름(매개변수,없다면 공란);으로 호출
  • 메소드가 리턴값이 있고 이를 받고싶다면 리턴값의 타입에 맞는 변수를 설정하여 리턴값을 받는다 (혹은 출력문 이용)

 

매개변수(parameter)와 인자

  • 매개변수와 인자는 둘다 메소드의 입력값인데, 매개변수는 메소드를 정의할 때 쓰는 입력값, 인자는 메소드를 호출할때 입력하는 실제 입력값이다
  • 매개변수는 메소드명(자료형 변수명) 으로 작성하고 인자는 자료형 없이 메소드명(인자값)으로 작성한다

 

리턴값

  • 리턴 뒤에 작성된 값을 메소드의 결과로 반환하고, 메소드를 종료시키는 역할
  • 리턴은 메소드를 종료시키기 때문에, 단순히 리턴을 세 줄 입력하면 맨 첫줄의 값만 리턴 가능할 뿐만 아니라 컴파일 에러가 뜸
  • if문 등으로 리턴 문장이 한번만 실행되도록 하면 괜찮음
  • 리턴값을 여러개로 하고싶다면? 배열을 리턴하면 가능함 

 

public static void main(String [] args) 에서 String[] args 의 의미

메인 메소드는 애플리케이션 실행 시 가장 먼저 호출되는 메소드

  • 앱에 시작 할 때 데이터를 입력하기 : string [] args 는 매개변수, 콘솔에서 애플리케이션 실행명령 뒤에 입력하는 값의 개수만큼 args 배열에 값이 들어가게된다(혹은 이클립스 상의 run configurations 를 통해서도 애플리케이션 실행시의 입력값을 줄 수 있다)
  • 앱 실행 중에 데이터를 입력하기 : scanner 등의 라이브러리 사용
  • 키보드 제어를 통한 입력이 아닌 파일을 입력받을 수도 있음

사진은 파일을 입력받는 클래스를 작성하고 이를 콘솔에서 실행한 사진이다
콘솔 실행은 나한텐 쥐약같은 부분이라,, 몇번 헤맸다
cd를 이용해서 클래스가 있는 경로로 이동하고, javac로 컴파일 진행 후 (javac 명령어를 입력하면 .class파일이 생긴다) java로 실행하면 결과가 출력된다