메서드(method)
-프로그램의 유연성을 위하여 반복되어 사용되는 내용을 묶어 특정 이름으로 관리하는 것.
능단 교재) 메서드는 특정 객체의 동작이나 행위를 정의한 것으로 클래스의 주요 구성 요소이다.
- 메서드는 클래스 안에서 관리된다.
-모듈화
메서드 형식
접근제어자 [지정 예약어 ] 반환 타입 메서드명(매개변수들){
처리할...
내용들...
}
ex)
public 접근 제한자 static(정적 메모리 할당 키워드) void(반환 타입) main(String [] args) 메서드명{
}
ㄴ 접근 제한자 : 메서드의 접근 범위를 지정한다.
ㄴ 지정 예약어는 생략 가능하다.
ㄴ 정적 메모리 할당 키워드 : 프로그램 시작 시에 메모리에 데이터를 올려준다.
ㄴ 반환 타입 : 함수 내에서 결과를 보내는 위치. 리턴이 없는 경우에는 void를 사용한다.
ㄴ void는 키워드가 아님. 자료형이 없는 자료형이라고 생각하기.
메서드 명명규칙
1. 한 단어일 경우 소문자, 두 단어 이상 합쳐지면 첫 단어는 소문자 두 번째 단어부터 첫 이니셜 대문자.
2. 동사(행위) +명사
1. call by name : 재료 없이 이름으로 호출.
2. call by value : 재료가 필요한, 기본형 8개.
3. call by reference : 재료가 필요한, 기본형 8개 제외한 나머지.
혼합형으로 사용한다.
call by name.
package day11;
public class Day11_02 {
public static void xLine() {
//call by name
System.out.println("----------------------");
}
public static void main(String[] args) {
xLine();
System.out.println("이름 : 홍길동");
xLine();
System.out.println("나이 : 20");
xLine();
System.out.println("주소 : 서울");
xLine();
}
}
call by value : 기본형 8개가 넘어간다.
반환타입이 있어 보조제어문 return 사용하여 반환해줘야함.
다른 메서드에서 변수의 값을 치환하여도 메인에 있는 변수의 값은 변하지 않는다.
package day11;
public class Day11_03 {
// call by value ( 기본형 8개가 넘어간다)
public static int getMaxNum(int num1,int num2) {
// 반환타입 int 이면 return 사용하기!
/* int temp = num1;
num1 = num2;
num2 = temp;
getMaxNum에서 위치를 바꾸는건 main에는 적용 안됨.
*/
System.out.println("num1="+num1+"/num2="+num2);
int result = num1<num2?num1:num2;
return result;// 반환타입있어 보조제어문 return반환 해줘야함.
}
public static void main(String[] args) {
int num1 =10;
int num2 =20;
System.out.println("num1="+num1+"/num2="+num2);
// int max = num1>num2?num1:num2;
int max = getMaxNum(num1,num2);
System.out.println("max="+max);
System.out.println("num1="+num1+"/num2="+num2);
}
}
call by reference : 기본형8개 이외가 넘어간다.
다른 메서드에서 메인의 쌍둥이 변수가 생기는데 수정을 하게 되면 메인의 변수에서도 똑같이 수정된다.
package day11;
public class Day11_04 {
//call by reference(기본형8개 이외가 넘어간다)
public static void refTest(int arr[] ) {
arr[2]=1004; //다른 메서드에서 내용 변경
for(int i=0 ; i<arr.length;i++) {
System.out.print(arr[i]+" ");
}System.out.println();
}
public static void main(String[] args) {
int arr[] = {10,20,30,40,50};
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}System.out.println();
refTest(arr);
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" "); // 다른 메서드에서 배열 내용 변경한거 그대로 적용됨.
}
System.out.println();
}
}
Day11_05 : 사용자로부터 단을 입력받아 해당하는 단의 구구단을 출력하시오
입력은 메인 메서드, 출력은 gugu메서드에서.
package day11; //사용자로부터 단을 입력받아 해당하는 단의 구구단을 출력/ 입력-메인 출력-gugu메소드 import java.io.*; public class Day11_05 { public static void gugu(int dan) { // 반환아니고 출력이기때문에 void for(int i=1;i<=9;i++) { System.out.println(dan+"*"+i+"="+dan*i); } } public static void main(String[] args) throws IOException{ System.out.print("단 입력:"); int dan = System.in.read()-'0'; gugu(dan); } }
Day11_06 : 사용자로부터 이름과 횟수를 입력받아 입력받은 횟수만큼 이름을 출력하는 프로그램.
입력은 main 메서드 / 출력은 printName 메서드.package day11; /*사용자로부터 이름과 횟수를 입력받아 입력받은 횟수만큼 이름을 출력하는 프로그램. 입력은 main / 출력 printName */ import java.io.*; public class Day11_06 { public static void printName(int num,String name) { for(int i=1;i<=num;i++) { System.out.println("나의 이름은 "+name+"입니다."); } } public static void main(String[] args) throws IOException{ BufferedReader br= new BufferedReader (new InputStreamReader(System.in)); System.out.print("이름:"); String name = br.readLine(); System.out.print("반복 횟수:"); int num = Integer.parseInt(br.readLine()); printName(num,name); } }
Day11_07 : 사칙 계산기 만들기.
사용자로부터 두수와 연산자를 입력 받아 계산하여 출력하는 프로그램.
입력과 출력은 main메서드 / 연산 cal 메서드package day11; /*사칙계산기 만들기 사용자로부터 두수와 연산자를 입력받아 계산하여 출력하는 프로그램 * 입력과 출력은 main 메서드 / 연산은 cal메서드*/ import java.io.*; public class Day11_07 { public static int cal(int num1,int num2,char ch) { int result = 0; switch(ch) { case '+': result = num1+num2;break; case '-': result = num1-num2;break; case '*': result = num1*num2;break; case '/': result = num1/num2; } return result; } public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); System.out.print("첫번째 수:"); int num1 = Integer.parseInt(br.readLine()); System.out.print("두번째 수:"); int num2 = Integer.parseInt(br.readLine()); System.out.print("연산자(+,-,*,/) : "); char ch = (char)br.read(); int result = cal(num1,num2,ch); System.out.println(""+num1+ch+num2+"="+result); } }
Day11_08 : 사용자로부터 5개의 점수를 입력받아 출력한 후 점수를 내림차순 정렬하여 출력하는 프로그램 작성.
main 메서드 4줄 작성 /inputArr- 입력/ sortArr 정렬/ printArr 출력 /
main 메서드와 inputArr 메서드에 throws IOException작성
- 확인 전 작성 코드
package day11;
/*사용자로부터 5개의 점수를 입력받아 출력한 후 점수를 내림차순 정렬하여 출력하는 프로그램 작성.
main 메서드 4줄 작성 /inputArr- 입력/ sortArr 정렬/ printArr 출력 /
main 메서드와 inputArr 메서드에 throws IOException작성 */
import java.io.*;
public class Day11_08 {
public static void inputArr(int arr[])
throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
for(int i=0;i<arr.length;i++) {
System.out.print((i+1)+"번 점수:");
arr[i] = Integer.parseInt(br.readLine());
}
}
public static void sortArr(int arr[]) {
for(int i=0;i<arr.length-1;i++) {
for(int j=i+1;j<arr.length;j++) {
if(arr[i]<arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
printArr(arr);
}
public static void printArr(int arr[]) {
for (int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}System.out.println();
}
public static void main(String[] args)
throws IOException{
int arr[] = new int[5];
inputArr(arr);
printArr(arr);
sortArr(arr);
}
}'개발자 > 백엔드 웹 개발자 과정(국비)' 카테고리의 다른 글
| 2022년 11월 25일 _ 15회차(다형성(오버로딩,오버라이딩)/상속) (0) | 2022.11.25 |
|---|---|
| 2022년 11월 18일 _ 13회차(OOP) (0) | 2022.11.18 |
| 2022년 11월 15일 _ 10회차(배열복습, 2차원 배열 ) (0) | 2022.11.15 |
| 2022년 11월 14일 _ 9회차(배열) (0) | 2022.11.14 |
| 2022년 11월 11일 _ 8회차(for문, while,do-while,보조 제어문(break,continue)) (0) | 2022.11.11 |