[ 자바의 메소드 ] = function
자바는 클래스를 정의하고 정의된 클래스의 인스턴스를 만들어서
여러가지 기능적인 일을 처리하도록 만들어진 객체지향언어입니다.
위에서 기능적인 일을 담당하는 것이 메소드입니다.
메소드는 우리가 산수시간에 배웠던 함수와 같은 개념입니다.
즉 특정 기능(일)을 수행하도록 메소드에서 미리 정의하고
그 일이 필요할 때마다 해당 메소드를 호출해서 사용합니다.
이렇게 하는 주 이유는 같은 일을 수행하는 것을 반복적으로 코딩하지 않아도 되는 큰 이점이 있기 때문입니다.
메소드의 기본 형식
[접근제어자] 리턴타입 메소드명([파라미터,...]) {
명령문; (구현부 : 메소드가 하는 일 = 명령어의 집합)
}
[]는 없어도 되는 부분입니다. 나머지는 필수입니다.
[ Arguments ]
메인메소드의 기본문구에서
public static void main(String[] args) { } --> arguments 옵션 지정할 수 있음.
Run - Run Configurations - Arguments - Program arguments :
값을 넣어주면 "사용" 이 스트링배열 args의 0번째 값으로 지정됨.
String[] args = { , , , , , ...... } => (옵션값지정) => String[] args = { "사용" }
즉, args [ 0 ] = "사용"
package oop;
public class OOP02 {
public static void main(String[] args) {
if(args[0].equals("사용")) { // args[0] = "사용"
System.out.println("args를 사용합니다.");
}
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
args를 사용합니다.
사용
( 여러개의 arguments 입력 )
순서대로 args 배열의 요소값으로 입력됨 (띄어쓰기 한번으로 구분)
package oop;
public class OOP02 {
public static void main(String[] args) {
if(args[0].equals("사용")) {
System.out.println("args를 사용합니다.");
}
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
사과
배
포도
감
( Program arguments : 사용 5 )
package oop;
import java.util.Arrays;
public class OOP02 {
public static void main(String[] args) {
System.out.println(Arrays.toString(args)); // [사용, 5]
if(args[0].equals("사용")) {
System.out.println("args를 사용합니다.");
for (int i = 0; i < Integer.parseInt(args[1]); i++) {
System.out.println(i + 1 + "번 반복합니다.");
}
}
else {
System.out.println("옵션이 없어서 프로그램을 종료합니다.");
}
}
}
[사용, 5]
args를 사용합니다.
1번 반복합니다.
2번 반복합니다.
3번 반복합니다.
4번 반복합니다.
5번 반복합니다.
package oop;
import java.util.Arrays;
public class OOP02 {
public static void main(String[] args) {
System.out.println(Arrays.toString(args));
if(args[0].equals("")) {
System.out.println("args를 사용합니다.");
for (int i = 0; i < Integer.parseInt(args[1]); i++) {
System.out.println(i + 1 + "번 반복합니다.");
}
}
else {
System.out.println("옵션이 없어서 프로그램을 종료합니다.");
}
}
}
[사용, 5]
옵션이 없어서 프로그램을 종료합니다.
** 주의
args[0] = "사용"
args[1] = "10" (문자열10)
args[1] 는 string!!! 그래서 for문 조건식 범위에서 parseInt 사용 (string -> int)
메소드의 리턴 타입은 크게 두가지로 나뉩니다.
리턴할 내용이 없을 때는 void라고 적어줍니다.
만약 리턴할 내용이 있다면 반환되는 데이터의 데이터타입을 void 자리에 적어야 합니다.
명령문 끝에 return이라고 적고 반환할 데이터를 적어줍니다.
(기본자료형 / 참조자료형이나 공통)
void타입의 리턴일때는 메소드가 값을 리턴하게 됩니다.
이럴때는 에러가 납니다.
메소드 실행 중 리턴이 된다면 리턴 이후의 코드는 무시됩니다.
( 메소드 생성 ) _ void, String
package oop;
class Animal {
void sleep() {
// 반환타입 : void, 메소드명 : sleep, 파라미터 : 없음
System.out.println("Zzzzz...");
} // 출력문 메소드
void work(String[] arr01) {
// 반환타입 : String, 메소드명 : work, 파라미터 : 배열
for (int i = 0; i < arr01.length; i++) {
System.out.println(arr01[i]);
}
} // 배열요소값 출력 메소드
}
public class OOP02 {
public static void main(String[] args) {
Animal animal = new Animal();
String[] arrSTR = {"고양이", "개", "쥐", "토끼"};
animal.work(arrSTR); // work메소드 실행 --> 출력문 실행
// 고양이, 개, 쥐, 토끼
}
}
( 메소드 생성 ) _ int (return 값 필수)
package oop;
class Animal {
// add, fac 메소드 둘다 파라미터 및 리턴값 필요 *
int add(int num1, int num2) {
int result = num1 + num2;
return result;
// System.out.println("두 타입이 일치해야 합니다."); // Error :Unreachable code
} // 더하기 연산 메소드 --> 리턴값 이후코드는 실행하지 않음.
int fac(int num) {
int result = num;
for (int i = num-1; i > 0; i--) {
result *= i;
}
return result;
} // 팩토리얼값 리턴하는 메소드
}
public class OOP02 {
public static void main(String[] args) {
Animal animal = new Animal();
int addResult = animal.add(20, 30);
System.out.println(addResult); // 50
int facResult = animal.fac(5);
System.out.println(facResult); // 120
}
}
( 메서드 생성 & 실행 연습 )
package oop;
import java.util.Arrays;
class Animal {
// 빵만들기 : 입력된 숫자만큼 화면에 "빵을 만듭니다"라고 출력하고
// 그 갯수를 리턴하는 메소드 makeBread 만들기
// 메소드명 : makeBread, 입력값 및 리턴값 : (int)
int makeBread(int num) {
int count = num;
while(num > 0) {
System.out.println("빵을 만듭니다.");
num--;
}
return count;
}
/* (for문사용)
int makeBread(int num) {
int count = num;
for (int i = 0; i < num; i++) {
System.out.println("빵을 만듭니다.");
}
return count;
}
*/
}
public class OOP02 {
public static void main(String[] args) {
Animal animal = new Animal();
int breadNum = animal.makeBread(3);
System.out.println(breadNum);
}
}
빵을 만듭니다.
빵을 만듭니다.
빵을 만듭니다.
3
( 연습 - 출력값은!? )
package oop;
class Test{
public int variable(int num) {
int a = 10;
a++;
return a;
}
}
public class OOP03 {
public static void main(String[] args) {
Test t = new Test();
int a = 0;
a = t.variable(a);
System.out.println(a); // 11
}
}
* public int variable(int num) --> 매개변수 값은 가져왔지만 쓰지는 않음. 안쓰면 안가져와도됨..
대신,
public int variable( ) { ....}
--> 매개변수 int num 지워줄거면
a = t.variable();
--> 맞춰서 지워줘야함
( 타입변환 메소드 ) _ parseInt(), parseBoolean()
package oop;
import java.util.Arrays;
public class OOP02 {
public static void main(String[] args) {
String[] arr = new String[3];
arr[0] = "사용";
arr[1] = "10";
arr[2] = "false";
System.out.println(Arrays.toString(arr)); // [사용, 10, false]
// 1) string 값을 int값으로 바꾸기_ parseInt() 메소드
// type : int string
// int number = arr[1]; // 불가능
int number = Integer.parseInt(arr[1]);
System.out.println(number); // 10
}
// 2) string 값을 boolean 값으로 바꾸기
// type : boolean string
// boolean ch = arr[2]; // 불가능
// 2-1) parseBoolean() 메소드
boolean ch = Boolean.parseBoolean(arr[2]);
System.out.println(ch); // false
// 2-2) 삼항연산자
boolean ch1 = arr[2].equals("true") ? true : false;
System.out.println(ch1); // false
}
** arr01 [1] = "10" 의 경우 캐릭터 일때만 가능 > "10s" 처럼 다른게 붙어있으면 parseInt 불가능
** Integer.parseInt() : Integer라는 클래스 안의 parseInt메서드
'국비과정 > JAVA' 카테고리의 다른 글
20230616 _[11일차]_02. 기본생성자 & 명시된생성자 & this (0) | 2023.06.19 |
---|---|
20230616 _[11일차]_01. 메소드 오버로딩 & 생성자 (0) | 2023.06.19 |
20230615 _[10일차]_03. 객체 지향 특징 & 활용 (0) | 2023.06.18 |
20230615 _[10일차]_02. 객체 생성 연습 (인스턴스) (0) | 2023.06.17 |
20230615 _[10일차]_01. 객체타입 및 참조 (0) | 2023.06.15 |