참조 타입 - 0803

안씅👩🏻‍💻·2022년 8월 3일
0
post-thumbnail

메소드(method)의 정의

--> method 관련 용어 외워야함

메소드(method)

메소드(method)란?

  • 코드를 재사용할 수 있게 해줌.
  • 경제적으로 로직을 작성 할 수 있게 해줌.
  • java에서는 함수를 메소드라고 부름
  • 프로그램에서 여러 번 반복되는 코드를 별도의 메소드로 정의함.
public class Method{
	public static void number(){

		// number() 메소드 코드 내용 작성 부분

	}
	public static void main(String[] args){
		number();	
        // number() 메소드 호출해서 number() 메소드 코드 내용을 사용할 수 있음.

	}
}

메소드 장점

  • 한 번 코딩해 놓으면, 다른 사람에게 공유 가능

  • 메소드를 사용하는 사람은 메소드의 실제 구현 코드 내용을 이해하지 않아도 얼마든지 사용가능.

  • 전체 소스코드 양을 대폭 줄일 수 있고, 중복되는 코드를 제거 가능함.

    • 개발 생산성, 코드 재활용성이 좋아 유지 보수 하기 좋음
  • 중복 코드 덩어리를 수정 할 경우 , 전체 코딩 속도 향상 가능.


sum method 실습

sum(1,10)이 기계어로 처리되는 과정

  • 등록된 메소드 리스트에서 sum이라는 이름을 갖은 메소드를 찾음.
  • 찾은 sum메소드를 호출 후, 메소드에 formal parameter인 startValue에 1을 넣음.
  • endValue에는 10을 넣음.
  • result변수에 메모리 자리를 만들고 메소드 바디에 명령어 실행함.
  • 최종 결과 값을 갖고 있는 result변수의 값을 sum 메소드를 호출한 곳으로 넘겨줌 -->return
  • 최종 결과 값을 넘겨주기 전에 메소드의 내부 변수인 startValue endValue result변수의 메모리 자리는 삭제됨.
public static void main(String[] args) {

		System.out.println("1과 10사이의 합" + sum(1,10));
		System.out.println("27과 37사이의 합" + sum(27,37));
		System.out.println("35과 49사이의 합" + sum(35,49));
		
	}
	// 이름이 sum인 메소드 갖음
	public static int sum(int startValue, int endValue) {
		int result = 0;

		for (int i = startValue; i <= endValue; i++) {
			result += i;
		}
		return result;
	}

메소드의 입력값

매개변수(parameter)란?

  • 입력값을 수용하기 위한 변수를 의미함.
    • 매개변수는 ,로 구분하여 한번에 여러개 선언이 가능함.

인자(argument)란?

  • 매개 변수에 들어갈 입력값을 의미함.
    • 인자값은 ,로 구분하여 한번에 여러개 선언이 가능함.
public class Method{
	public static void number(int num){ 
    // number() 안에 들어오는 값은 int num;이라는 매개 변수에 들어옴.
		System.out.println(num);
	}
	public static void main(String[] args){
		number(5); // number()메소드에 5라는 인자값을 변수에 넣음
	}
}

메소드 작성시 주의

  • 프로그램을 작성 할 때, 가변적인 부분만 수정해서 프로그램을 사용할 수 있도록 만드는 것이 좋음.
    ex)
    • 어떤 메소드를 가변적으로 사용할 것인가?
    • 어떤 매개변수를 가변적으로 사용할 것인가?
    • 어떤 부분을 가변적으로 사용해야하는가?
      --> 다음을 잘 생각해 생각해 프로그램을 작성해야만, 메소드를 잘 활용할 수 있음.

메소드의 출력값

return의 필요성

  • return을 사용하지 않고 바로 출력하라고 하면 바르게 실행 됨.
    • 하지만, return을 사용하여 코드를 작성하면 가변적 메소드와 고정적 메소드를 정확히 구분할 수 있음
      --> 프로그램을 완성 후 , 추후에 수정이나 보완이 쉬워짐.

return 사용시 주의점

  • 메소드 안에서 return이 끝나면, return 값이 메소드 밖으로 반환됨과 동시에 메소드가 종료됨.

입력 값을 return으로 반환하기. (실습)

public class Method{
	public static String number(int num1, int num2){ 
    // num1 = 1; num2 = 5; 라는 값을 main()으로부터 받음
    	
        int i = num1;	// int i = 1;
        
        String output; 
        
        while (i < num2){ // i < 5
        	output += i; // 출력되는 숫자를 output에 담음.
            i++;
        }
        
     	return output; 
        // !!! return을 사용하면 결과값이 메소드 외부로 반환됨.!!!
		
	}
	public static void main(String[] args){
		String result = number(1,5); 
        // number()메소드에 1과 5라는 인자값을 순서대로 변수에 넣음
        // number()메소드에서 반환 받은 값을 result로 넣어줌.
        
        System.out.println(result); // 반환 받은 입력값 출력
	}
}

void 메소드

  • void는 빈공간을 의미함.
  • void가 메소드 앞에 붙으면, 그 메소드는 return 값은 존재하지 않음을 의미함.



String 타입

String 참고 )
https://www.w3schools.com/java/java_ref_string.asp

String 타입(문자열)

  • 문자열 리터럴 동일하다면 String 객체 공유함.
  • new 연산자를 이용핚 String 객체 생성함.
    • 힙 영역에 새로운 String 객체 생성함.
    • String 객체를 생성핚 후 번지 리턴함.

s1.compareTo(s2)

  • 문자열의 크기 비교

  • s1s2의 문자열을 알파벳 순서로 비교함.

    • 첫번째 문자부터 비교함.
  • s1.compareTo(s2) 메소드 실행 결과

  • s1의 문자열 > s2의 문자열 이면, 양수의 값 return

  • s1의 문자열 < s2의 문자열 이면, 음수의 값 return

  • s1의 문자열 == s2의 문자열 이면, 0을 return

System.out.println(s1+ "과" +s2+"의 크기 비교 : " + s1.compareTo(s2));
System.out.println("키위와 오렌지의 크기 비교 : " +"kiwi".compareTo("orange"));

.substring(startIndex,endIndex)

  • .substring(startIndex,endIndex)형식

    • 전체 문자열에서 일부 문자열 가져오기.
  • startIndex 0부터 시작함

    • 일부 문자열 가져오기에 포함
  • endIndex 일부 문자열 가져오기 불포함

    • endIndex - 1 순서 문자까지 가져옴.
  • startIndex만 있고 endIndex 값이 없으면

    • startIndex 부터 문자열 끝까지 데이터 가져옴
System.out.println(message.substring(0,5));
		System.out.println(message.substring(0,7));
		System.out.println(message.substring(0,11));
		
		System.out.println(message.substring(2,5));
		System.out.println(message.substring(2,7));
		System.out.println(message.substring(2,11));
		
		System.out.println(message.substring(0));
		System.out.println(message.substring(2));

.indexOf('char' "String" startIndex )

  • 문자열에서 찾고 싶은 문자열의 시작 index가져오기.

  • .indexOf('char' "String" startIndex )

    • 찾고 싶은 문자열에 startIndex부터 시작하는 문자열이 있으면 Index를 가져옴
    • 단, startIndex가 주어지지 않으면 ,startIndex는 0부터 시작.
    • 만약 찾고자 하는 문자나 문자열이 없으면 -1을 가져옴.
    • 문자나 문자열을 찾을 때 대소문자 구분하여 찾음.
  • .lastIndexOf() 는 문자열의 끝에서부터 찾기 시작

System.out.println("wellcome to java".indexOf('w'));
System.out.println("wellcome to java".indexOf('o',5));
System.out.println("wellcome to java".indexOf("come"));

System.out.println("wellcome to java".lastIndexOf('w'));System.out.println("wellcome to java".lastIndexOf('o',5));
System.out.println("wellcome to java".lastIndexOf("come"));
  • .toUpperCase()를 사용하여 원하는 문자열 찾기에 응용 가능
System.out.println("wellcome to java".toUpperCase().indexOf("JAVA",5));

.replace(oldChar, newChar)

  • 문자열 내부에서 특정 문자를 다른 문자로 바꾸기

  • .replace(oldChat, newChar)형식

    • oldChar에서 newChar로 바꾸기.
String s1 = "apple";
		
		System.out.println(s1.replace('p', 'r'));



오버로딩

같은 이름이지만 다른 매개변수를 같는 경우

profile
그냥 은근슬쩍 살다 가긴 싫어

0개의 댓글