본문 바로가기
코딩/자바 기초특강

20.11.17 TUE 메소드

by 6^6 2020. 11. 17.
728x90
  • 메소드
  • 리턴

 

함수만 잘 만들어도 밥 벌어먹고살 수 있다.

< 함수 써야 할 때>
똑같은 기능(소스)이 두 번 이상 들어갈 때.
걍 무조건 함수는 만들어놓으면 놓을수록 좋다. 언젠간 쓸 수 있으니까.

하나의 함수는 되도록이면 하나의 기능만 하도록 만들어야 한다.
하나의 함수에 두 개의 기능이 들어가면 두개의 함수를 만든다.

 

모든 프로그램은 main 가짐
객체지향 언어에서 매우 중요
public static void main(String[] args) 단어 하나하나 뜻 알아야 함
   ------------------------- main함수
무조건 함수는 (뭐가오든지간에)에서 찾는다. 함수이름은 무조건()앞에옴
함수 이름( ){
함수}

System.out.println(); → println 도 함수

함수-만들고-써먹기(호출) 

call / invoke 같은뜻

(안에 있는 것) 부르는 용어 3가지
매개변수
파라미터
인자

함수를 (호출);하는 쪽에서 파라미터 value(값)이 들어간다.
함수를 (구현){}하는 쪽에서 파라미터 - 변수선언(int, double..)이 들어간다(=메모리 할당)

그리고 파라미터엔 초기화 부분이 들어가면 안 된다. -은근 실수하는 사람 많음
ex. (int i=7) xxx

 

★함수안에 함수 만드는 문법은 없다.★
(  ){
}
(  ){
} correct

(  ){
  (  ){
  }
} 있을 수 없는 일

 

 

 

 

 

1번. (){}는 함수 만든 것, ();는 함수 호출한 것. 여기서 함수는 3개, 호출한 함수는 8개

//1번
public class hh {
	
	public static void main(String[] args) {
		System.out.println("프로그램의 시작");
		hiEveryone(12);//12를 전달하며 hiEveryone호출(써먹기)
		hiEveryone(13); //13 〃 //hiEveryone도()앞에있으니 함수임.
		System.out.println("프로그램의 끝");
		
	}
	
	public static void hiEveryone(int age) { //매개변수가 하나인 메소드의 정의
		System.out.println("좋은 아침입니다.");
		System.out.println("제 나이는"+age+"세 입니다.");
	hiEverybody(2020);
	}
	
	public static void hiEverybody(int year) {
		System.out.println("지금은"+year+"년 입니다.");
	}
}		

//프로그램의 시작
//좋은 아침입니다.
//제 나이는12세 입니다.
//지금은2020년 입니다.
//좋은 아침입니다.
//제 나이는13세 입니다.
//지금은2020년 입니다.
//프로그램의 끝

 

 

2번

//2번 매개변수가 둘인 메소드의 정의, 매개변수가 없는 메소드의 정의
public class hh {
	
	public static void main(String[] args) {
		double myHeight = 175.9;
		hiEveryone(12, 12.5);
		hiEveryone(13, myHeight); 
		byEveryone();
		
	}
	
	public static void hiEveryone(int age, double height) { 
		System.out.println("제 나이는"+age+"세 입니다.");
		System.out.println("저의 키는 "+height+ "cm 입니다.");

	}
	
	public static void byEveryone() {
		System.out.println("담에 뵙겠습니다.");
	}
}	
//제 나이는12세 입니다.
//저의 키는 12.5cm 입니다.
//제 나이는13세 입니다.
//저의 키는 175.9cm 입니다.
//담에 뵙겠습니다.

 

 

3번

//3번 절대값 구하기
public class hh {
	
	public static void main(String[] args) {
		abs(7, 3);
		abs(-5, -3);
		abs(4,-3);
	}
	
	public static void abs(int i, int j) {
		if(i-j<0) {  //if,else써서 i<j이면 으로 만들수도있다.
			i=-i;
			j=-j;
		}
		
		System.out.println(i-j);
	}
}	

 

 

4번

//4번 별찍기. (층수)
public class ee {
	
	public static void main(String[] args) {
		starPrint(2);
		starPrint(3);
		starPrint(4);
	}
	
	public static void starPrint(int num) {
		
		for(int i=1; i<=num;i++) {
			for(int j=1; j<=i; j++) {
				System.out.print("*");
				}
			System.out.println("");
		
		}
	}
}

 

 

 

리턴

리턴(반환) 타입 메소드이름 (파리미터){

반환 값(변수or상수);
}

boolean regStudent(String name){

return true;
}

리턴해야 값이 들어간다.

return은 public static void에서 void말고 변수가 들어간다

1번. public static int adder()에서 왜 int가 들어가는지?  -- void 가 오면 return값이 없는것임.

//1번 리턴
public class ee {
	
	public static void main(String[] args) { //void=리턴타입
		int result;
		result=adder(4,5); //adder가 반환하는 값을 result에 저장
		System.out.println("4 + 5 = " +result);
		System.out.println("3.5 x 3.5 = "+square(3.5)); //println에 함수가 또 들어감-
	}
	
	public static int adder(int num1, int num2) {  //리턴
		int addResult = num1 + num2;
		return addResult; //addResult의 값을 반환
		//return:값의 반환을 명령
	}
	
	public static double square(double num) {
		return num * num; //num*num의 결과를 반환
	}
	
	
}

 

2번. final double에서 final은 왜 붙는지?

//2번 메소드 연습문제
public class ee {
	
	public static void main(String[] args) { 
		
		System.out.println("원 둘레(2.4): " + calCircleRound(2.4));
		System.out.println("원 넓이(2.4): "+ calCircleArea(2.4)); 
	}
	
	public static double calCircleRound(double r) {
		
		
		final double PI = 3.14;
		return r*r*PI;
	}
	
	public static double calCircleArea(double r) {
		
		final double PI = 3.14;
		return r*r*PI;
	}
	
}
728x90

'코딩 > 자바 기초특강' 카테고리의 다른 글

20.11.19 THU  (0) 2020.11.19
20.11.18 WED  (0) 2020.11.18
20.11.06 FRI 자바기초특강 5  (0) 2020.11.06
20.11.05 THU 자바 기초특강  (0) 2020.11.05
20.11.04 WED 3일차 과제 --11.05 THU 과제 피드백  (0) 2020.11.04

댓글