[Java] 메소드 (입력값과 출력값)

SeongEon Kim·2022년 4월 12일
0

JAVA

목록 보기
12/52

메소드의 입력값과 출력값에 대해 알아보자.

  1. 입력값
    매개변수와 인자값
    public static void class(int limit) {
    	int i = 0;
       while (i < limit) {
       	System.out.println(i);
           i++;
           }
    }
    public static void main(String[] args) {
    	class(5);
    }

 위의 코드를 살펴보면 class라는 메소드를 아래에서 호출하고 위에서 정의하는데,
 위의 코드에서 정의된 class 메소드 안에 limit이라는 변수를 정수만을 가질 수 있다고 규정하고 있다. (매개변수 : parameter)
 아래 호출 메소드 class 괄호 안 5라는 숫자(인자 : argument)는 위 정의 메소드 class 안 limit에 전달하게 되어 위의 메소드의 i는 5미만, 즉 4까지 출력하게 되는 것이다.
 
 위의 코드는 고정적인 요소와 가변적인 요소가 분리되어 코드가 작성되어있다. 다르게 표현하면, 아래처럼도 표현할 수 있다.

public static void class() {
int limit = 5;
int i = 0;
while ( i < limit ) {
System.out.println(i);
i++;
}
}

 위의 코드는 고정적인 요소와 가변적인 요소가 함께있는 코드이다.

2. 출력값 (1)

public static String class(int init, int limit) {
int i = init;
//만들어지는 숫자들을 output이라는 변수에 담기 위해서 변수에 빈 값을 준다.
String output = "";
while(i < limit) {
//숫자를 화면에 출력하는 대신 변수 output에 담는다.
output += i;
i++;
}
return output;
//output에 담겨있는 문자열을 메소드 외부로 반환하려면 위와 같이 return에 배치하면 된다.
}

public static void main(String[] args) {
// 메소드 class가 리턴한 값이 변수 result에 담긴다.
String result = class(1,5);
// 변수 result의 값을 화면에 출력한다.
System.out.println(result);
}


 아래에서 init에 1을, limit에 5를 호출하였고 위의 정의 메소드에서의 출력 식에 따라 1부터 4가 출력된다.
 
 3. 출력값 (3)
 
  출력된 값을 파일 등의 다양한 루트를 통해 출력하려고 하면 어떻게 해야할까.
  

public static String class(int init, int limit) {
int i = init;
String output = "";
while(i < limit) {
output += i;
i++;
}
return output;
}

public static void main(String[] args) {
String result = class(1,5);
System.out.println(result);
try {
//다음행은 out.txt라는 파일에 class라는 메소드가 반환한 값을 저장한다.
BufferedWriter out = new BufferedWriter(new FileWriter("out.txt));
out.write(result);
out.close();
} catch (IOException e) {
}
}

 위의 코드 처럼 작성하면 return으로 출력될 값이 출력되는것은 물론이고, out.txt라는 파일에 저장까지 된다. 이는 다음에 좀더 자세히 알아보도록 하자.
 
 4. 출력값 (4)
 복수의 값들을 출력하고 싶다면 어떻게 해야할까.
하나의 메소드는 한번에 여러개의 값을 출력하지 못한다. 

public state String getClass1() {
return "김성언";
}
public state String getClass2() {
return "성언김";
}
public static void main(String[] args) {
System.out.println(getClass1 ());
System.out.println(getClass2 ());
}

 하나의 메소드는 하나의 값만을 반환할 수 있기에 위와 같은 코드로 메소드를 만든것이다.
 이는 비효율적일 수 있기 때문에 메소드 getclass가 리턴한 배열을 students변수에 담아서 여러개의 데이터를 처리할 수 있다.
 아래의 코드를 확인해보자.
 

public static String[] getclass() {
String students = {"김성언", "성언김"};
//김성언, 성언김 각 담겨있는 배열을 studnets에 담았음.
return students;
}
public static void main(String[] args) {
String[] students = getclass();
//getclass가 받는 배열은 students가 되는 것이다.
}


 위의 코드에서 getclass 호출하는 부분에서 getclass()의 ()안은 인자값을 기입하고, 여러개의 데이터를 담아서 메소드에 전달할 수 있게 되므로 훨씬 효율적으로 표현할 수 있다.
 
 
profile
꿈을 이루는 사람

0개의 댓글