본문 바로가기

Programming/자바

생활코딩 자바 - 메소드

메소드, 객체지향.. => 웅장, 결함 없고, 유지보수 쉬운 애플리케이션 만들기 위한 기법

 

public static void main(String[] args) {   => method

 

 

메소드의 정의, 호출

public static void numbering() {
int i = 0;
while (i<10) {
System.out.println(i);
i++;
}
}
=> 정의

public static void main(String[] args) {
numbering();

numbering();

numbering();

numbering();

numbering();

=> 호출

 

 

main 메소드

=규칙, 약속 (이해의 영역이 아님)

재활용 -> 코드 양 줄일 수 있음 -> 유지보수 쉬워짐

 

 

입력값
  • 매개변수, 인자

public static void numbering(int limit) {     => 매개변수(parameter)
int i = 0;
while (i<limit) {
System.out.println(i);
i++;
}
}

public static void main(String[] args) {
numbering(2);  => 인자(argument)

//1 2

 

==> 고정/가변 잘 나뉘어 가변적인 것은 nubmer(2) 하나만 남음, 고칠 때 main 메소드 괄호 숫자만 변경하면 됨

=> 고정 / 가변 두 파트로 나눠서 가변 파트 최소화하면 코드 변경할 때 편리

 

public static void numbering() {

int limit = 2;

int i = 0;
while (i<limit) {
System.out.println(i);
i++;
}
}

public static void main(String[] args) {
numbering();

//1 2

 

  •  

public static void numbering(int init, int limit) {
int i = init;
while (i<limit) {
System.out.println(i);
i++;
}
}

public static void main(String[] args) {
numbering(2,5);

 

 

출력값 (return)

 

  • 리턴값에 따른 메소드 형식

public static String numbering(int init, int limit) {  => numbering : 메소드의 이름 / String: 리턴할 값이 반드시 문자열
int i = init;
String output = "";
while (i<limit) {
output += i;
i++;
}
return output;    => return 에서 메소드 종료, 출력값 외부 반환
}


public static void main(String[] args) {  => void : 리턴값 존재 X
String result = numbering(1,5);   => 메소드 numbering이 리턴한 값이 변수 result에 담김
System.out.println(result);   => 변수 result의 값을 화면 출력

 

 

--> 예측가능성 O 유연성 X 한 자바의 특성 알 수 있음

 

  •  

import java.io.*;

public class MethodDemo6 {

public static String numbering(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 = numbering(1,5);
System.out.println(result);
try {
BufferedWriter out = new BufferedWriter(new FileWriter ("out.txt"));
out.write(result);
out.close();
} catch (IOException e) {
}
}}

 

  • return은 한번만 된다?

1.

public static int one() {
return 1;
return 2;
return 3;
}


public static void main(String[] args) {
System.out.println(one());
}}

 

=> 같은 맥락에서는 return 한 번만 작성 가능

 

2.

public static String num(int i) {
if(i==0) {
return "zero";
} else if(i==1) {
return "one";
} else if(i==2) {
return "two";
}
return "none";
}

public static void main(String[] args) {
System.out.println(num(1));
}}

 

==> else if 사용하여 여러 return 작성 가능

 

3.

public static String getmember1() {
return "a";
}
public static String getmember2() {
return "b";
}
public static String getmember3() {
return "c";
}

public static void main(String[] args) {
System.out.println(getmember1());
System.out.println(getmember2());
System.out.println(getmember3());

}}

 

4. 하나의 메소드로 여러 리턴값 가지려면 배열 이용

 

public static String[] getmembers() {
String[] members = {"a", "b", "c"};
return members;
}

public static void main(String[] args) {
String[] hello = getmembers();  =>hello 변수에 getmembers 메소드 내용 담음->출력 가능
System.out.println(hello);

}}

 

원래 getmembers 랑 메인 메소드 안에 변수 이름이 둘다 members였는데, 내가 헷갈려서 메인메소드 변수는 hello로 임의적으로 바꿨다 확실히 메소드부터 좀 헷갈리기 시작한다