アカデミー6日目-Java


2021.04.05


方法

  • メソッド、関数、プロシージャ、サブルーチン
  • コードのセット
  • 特定の目的のために実行されるコードセット(★重要)
  • 再利用可能コードユニット(★重要)
  • 保守性が高い(変更しやすい)>繰り返される雑業に限られて...
  • コード性質別管理>管理しやすい(物理部分)
  • リピート可能(★★★)->大量のコードも1回の呼び出しでリピート可能
  • の方法は割ることができて、割ることができて抽出->とても持ちやすいです.

  • メソッドの使い方
  • メソッド宣言(定義)x 1回
  • メソッド(使用)XN回
  • を呼び出す.
      접근지정자 접근키워드 반환자료명 메소드명(인자리스트)
      {
      		 
      }
    Public state void 메소드명() //메소드 헤더, 시그니처(Signature)
    { //메소드 바디, 구현부
    			실행 코드;
    }
  • マスターメソッド
  • 特殊方法
  • 名前は予約語です.(main):通常、プログラム全体が一意でなければなりません.
  • は、開発者(人)ではなく>JVMによって呼び出されます.(システム呼び出し)->アプリケーションの実行時にmainを最初に呼び出す()->コールバック方法
  • 計画の始点から終点まで
  • メソッド宣言位置
  • public class Ex13_Method {
        
    	public static void main(String[] args) {
            
             //이 안에서는 메소드 선언 불가능
            
        } //main메소드 끝
       
    //여기서 메소드 선언 가능
    //- 클래스 매부에서 작성 가능
    //- 클래스 외부에서 작성 불가능
    //- 메소드내에서 메소드 선언 불가능
    //- 메소드끼리 선언 순서는 무관
        
    } //Ex13_Method (클래스) 끝
    
    //이곳은 메소드 선언 불가능
    public class Ex13_Method {
        
    	public static void main(String[] args) {
        
            
            //요구사항) "안녕하세요." x5회
    		//수정사항) "안녕하세요" -> "반갑습니다."로 수정
    		
    		//복붙 -> 하드코딩
    		//프로그래밍 기술 -> 한번 짠 코드를 어떻게 하면 다시 안짜고 재사용할 수 있을까?
    		
    		System.out.println("반갑습니다.");
    		System.out.println("반갑습니다.");
    		System.out.println("반갑습니다.");
    		System.out.println("반갑습니다.");
    		System.out.println("반갑습니다.");
    		System.out.println("반갑습니다.");
    		
           
    	//2. 메서드 호출하기
    	// - 선언한 메소드의 이름을 부른다.
        //제어가 hello() 메소드 정의된 곳으로 이동한다. > hello() 실행을 마치고 이곳으로 제어가 되돌아온다.     
    	hello(); 
    	hello();
    	hello(); 
        hello();
    	hello();
            
        }//main 
        
    	//1.메소드 선언
    	//hello : 메소드 이름, 정의/ 호출에 사용된다. 
    	public static void hello() {
       	 	//인사하는 코드 
    		System.out.println("반갑습니다~~");
    	}
        
    }//Ex13_Method
    public class Ex13_Method {
        
    	public static void main(String[] args) {
            calc();
    		calc();
        }
        public static void calc() {
    		int a = 10;
    		int b = 20;
    		
    		System.out.println(a + b);
    	}
        
    }
    なぜ
  • メソッドを作成するのか
  • メソッドを性格によって異なるメソッドに分けると、読みやすさが良くなり、また使いやすくなります.△引き裂く方法さえあれば、引き裂いてください.
  • //메서드가 다르면 변수명이 같아도 된다.
    public static void aaa(int num) {
    	int a;
    	//int a; -> 같은 메서드 안에서는 같은 이름의 변수 사용 불가.
    }
    public static void bbb(int num) {
    	int a;
    }
    
    메소드명은 같은 이름을 2개 쓸 수 없다.
    public static void test() {
    			
    }
  • メソッドパラメータリスト
  • パラメータ
  • 因子(Argument)
  • パラメータ
  • 佳/実因子
  • メソッド呼び出し時に転送するデータの役割
  • (ネガティブ)多形性実現
  • public class Ex14_Method {
        
    	public static void main(String[] args) {
            hello();
            hello2();
        	//hello245(); //누구? -> 메소드명 만들기도 힘들다.. 의미있게.. -> 식별자 뒤에 숫자x 
    	}
        
        //'홍길동'에게 인사하는 메소드를 구현하시오.
    	public static void hello() {
    		System.out.println("홍길동님. 안녕하세요.");
    	}
        
        //'아무개'에게도 인사를 하는 메소드를 구현하시오.
    	public static void hello2() {
    		System.out.println("아무개님. 안녕하세요.");
    	}
        
        //우리반 30명에게 인사를 하는 메소드를 구현하시오.
    	//- 메소드를 30개 추가 선언하기
    	//- 대한민국 국민들에게 각각 인사를 하는 메소드를 구현하시오.
    	//- 전세계 모든 사람들에게 각각 인사를 하는 메소드를 구현하시오. -> 78억개
    	public static void hello3() {
    		System.out.println("도라에몽님. 안녕하세요.");
    	}
    	
    	public static void hello4() {
    		System.out.println("피카츄님. 안녕하세요.");
    	}
    }
    public class Ex14_Method {
        
    	public static void main(String[] args) {
            //public static void hi(String){}
    		//hi(); -> 에러 The method hi(String) in the type Ex14_Method is not applicable for the arguments()
    		
    		hi("홍길동");
    		hi("아무개");
    		hi("호호호");
    		hi("하하하"); //실인자(Actual Argument)
            
            //매개변수 사용시 주의점!!!
    		// -> 가인자와 실인자의 갯수가 동일해야한다.
    		// -> 가인자와 실인자의 자료형이 동일해야한다.
    		// -> 형변환이 가능하면 자료형이 동일하지 않아도 된다. 
    		
    		//hi();
    		hi("홍길동");
    		//hi("홍길동", "아무개"); 
    		//hi(100);
        }
        
        public static void hi(String name) { //매개변수, 가인자(Formal Argument)
    		
    		//String name = "홍길동"; // -> 에러 Duplicate local variable name
    		
    		System.out.printf("%s님 안녕하세요\n", name);
    	}
        
    }
    public class Ex14_Method {
        
    	public static void main(String[] args) {
            //public static void bye(String name, int age)
    		bye("홍길동", 20);
    		bye("뽀로로", 5);
            
            byte b = 10;
    		bye("홍길동", b);
    		//bye("홍길동", (int)b); //byte(String name, int age) --> 암시적형변환
            
        }
        //타입 상관없이 넣고 싶은 갯수만큼 매개변수를 사용할 수 있다. 
    	public static void bye(String name, int age) {
    		//인삿말을 다르게 하고 싶어.
    		//10세 이상 > 안녕하세요
    		//10세 이하 > 안녕~
    		
    		String result = age >= 10 ? "안녕하세요" : "안녕~~";
    		
    		System.out.printf("%s님 %s\n", name, result);
    		
    	}
    }
    public class Ex14_Method {
        
    	public static void main(String[] args) {
            //2개의 숫자를 입력받아 연산과정 출력
    		//하드코딩
    		int n1 = 10;
    		int n2 = 20;
    				
    		System.out.printf("%d + %d = %d\n", n1, n2, n1 + n2);		
    			
    		n1 = 5; 
    		n2 = 9;
    		
    		System.out.printf("%d + %d = %d\n", n1, n2, n1 + n2);		
    		
    		n1 = 22;
    		n2 = 123;
    		
    		System.out.printf("%d + %d = %d\n", n1, n2, n1 + n2);		
    		
    		//동일한 코드 중복 발생 -> 수정이 힘듦..
    		
            //메서드를 사용해서 재사용
    		add(n1, n2);
            
    		n1 = 111;
    		n2 = 222;
    		
    		add(n1, n2);
    		n1 = 1;
    		n2 = 2;
    		
    		add(n1, n2);
            
        }
        public static void add(int n1, int n2) { 
    		//int n1 = 10;
    		//int n2 = 20;
    		System.out.printf("%d + %d = %d\n", n1, n2, n1 + n2);
    	}
    }
  • 戻り値
  • メソッド実行後に戻るデータ
  • 誰が持って帰るの?メソッドを呼び出した場所から戻り値を返します.
  • public static 반환타입 메소드명(인자 리스트){
    	실행코드;
    }
    public class Ex15_Method {
    
    	public static void main(String[] args) {
            //m1(); //반환값 num이 남는다. 
            
            int result = m1(); //리턴값을 담을 변수를 선언, 메소드의 반환값을 받아서 콘솔에 출력
    		
    		System.out.println(result);
            
        }
        //반환값이 있는 메소드를 선언했다.
    	//반환타입과 반환값의 타입이 일치해야한다.
    	public static int m1() {
    		int num = 100;
    		
    		return num; //return문, 반환문
    		//return 100, 200,300; -> 여러개를 반환할 수 없음 
    	}
    }
  • パラメータ値は複数を超えることができ、戻り値は1つしか超えられません.
  • public class Ex15_Method {
    
    	public static void main(String[] args) {
            System.out.println(add(10,20)); //바로 메서드를 확인만 할 때
    		
    		//메소드 = 함수 -> 수학의 함수 정의 f(x) = y
    		int n = add(30, 40); //지속적으로 쓰고 싶을땐 반환값을 변수에 저장해서 사용
    		System.out.println(n);
            
        }
        //void : 돌려줄 값이 없다.
    	public static int add(int a, int b) {
    		return a + b;
    	}
    }
    public class Ex15_Method {
    
    	public static void main(String[] args) {
            int age = 25;
    		String result2 = check(age) ? "미성년자" : "성인";
    		
    		System.out.println(result2);
        }
        //나이에 따라 성인인지 미성년인지 확인해주는 메서드
    	public static boolean check(int age) {
    		return age >= 19 ? true : false;
    	}
    }
    public class Ex15_Method {
    
    	public static void main(String[] args) {
            
        }
        //This method must return a result of type int
    	//반환값을 int타입을 써야한다.
    	//public static void test() {
    	//	return 100;
    	//}
    	
    	//메소드가 실행을 종료하고 호출된 곳으로 돌아가는 경우
    	//1. 메소드의 끝(})을 만났을 때.
    	//2. return문을 만났을 때.
    	
    	public static int test() {
    		
    		System.out.println("테스트1");
    		
    		return 100;
    		
    		//리턴 뒤에 코드를 적으면 안된다.
    		//System.out.println("테스트2"); //Unreachable code
    	}
    }