메소드
- 일련의 코드를 단순화 한다.
- 일반적으로 입력에 따른 결과값을 반환한다.
- void타입의 메소드는 리턴값이 존재하지 않는다.
- 더욱 편리한 프로그래밍을 가능케 한다.
- 반환값은 메소드를 호출했던 해당 위치로 반환한다.
인플루언서 마케팅 애드릭스-CPA CPI CPS 제휴마케팅 재택알바 광고
블로그 페이스북 SNS로 집에서돈버는방법 애드릭스입니다.단기재택근무알바 CPA CPI CPS 광고 홍보 수익을 창출해보세요.부업투잡창업 가능
www.adlix.co.kr
공부하다가 궁금했던 내용의 답을 찾았다!!
아하 이랬던거구나..
1. 메소드 구성
아무튼 직접 어떤 메소드를 만들어보자.
그전에.. 메소드의 구성 먼저 알아가자.
public static 반환타입 메소드이름(입력변수) {
-변수 생성-
-값 계산-
-값 반환-
}
이런식의 구성이다.
ㅇ입력변수는 매개변수(파라미터)라고도 한다. 타입을 입력하는 값에 맞추어서 정의해줘야 한다.
ㄴ파라미터가 없는 메소드도 있다. 예를 들면 Math.random() 메소드가 있다. 아래에서 보겠다.
ㅇ반환시에는 return이라는 키워드를 사용한다.
ㅇpublic static은 지금은 넘어가고, 추후에 다시 한번 다뤄보도록 하자.
1.1. 메소드 구성 예시
입력값을 제곱하는 square메소드를 만들어 보려고 한다.
square메소드의 구성은 아래와 같다.
public static int square(int n) {
int result;
result = n * n;
returen result;
}
이렇게 메소드를 정의하고, 호출해보자.
int z = square( 4 ); // 입력: 4 ->반환: 16
System.out.println( z ); // 16
1.2. 다양한 메소드 예시
메소드 생성 예시 - (다중 파라미터 메소드) 원기둥의 부피를 반환하는 메소드
ㅇ메소드 만들기 & 강제적 형변환 (캐스팅) 예시
2. 반환값이 없는 메소드
- void타입은 리턴값이 없다.
return;으로 메소드를 끝내거나, return이라는 키워드를 생략할 수 있다.
=> void타입 메소드의 예시
(메인 메소드에서 다른 메소드를 호출하고 있다.)
3. 파라미터가 없는 메소드
괄호 사이에 아무것도 입력되지 않는 메소드! 파라미터가 없는 메소드!
예를 들면 이렇다.
//파라미터가 없는 메소드 호출 예
int a = getTen();
//파라미터가 없는 메소드 정의 예
public static int getTen() {
return 10;
}
<파라미터가 없는 대표적인 메소드> : Math.random()
>>해당 메소드는 0.0이상 1.0미만의 임의 실수를 반환한다. (정수 아님~)
랜덤 메소드를 사용해서 1부터 10사이의 임의 정수를 구해보자.
double r = 10* Math.random();
int temp = (int) r; // int타입이므로, 0, 1, ..., 9중 하나. (랜덤)
int n = temp +1; // 1, 2, ..., 10중 하나. (랜덤)
temp와 n은 랜덤으로 1차이가 나게 된다.
이 Math.random()메소드를 이용하여 주사위 던지기 코드를 짜보자
일단..
1. 내가 한거
나는 일단 Math.random()의 반환값에 10을 곱해서 0.0이상 10.0미만을 만들어줬다.
그리고 나서 +1을 하고 1.0이상 11.0미만을 만들었다. 그리고 int로 캐스팅해서 1이상 11미만으로 만들었다.
그 후 조건문을 사용해서 6이 넘어버리는 경우에 대해 다시 주사위를 굴리도록 코딩했다.
2. 정답 코드 예
음... 정답코드에서 return (int) (Math.random() * 6 +1); 을 좀 알아두자..
잠시 저 부분을 읽고 멈칫했다. 저렇게 표현 가능한게 신선해서...
배율이 달라질 뿐 확률은 당연히 변함 없다. 그냥 필요한만큼의 정수까지 표현되도록 맞춰주는 것이다.
0.0이상 6.0미만의 정수니까.. 1~6을 전부 포함하려면 1.0이상 7.0미만으로 만들고 int로 캐스팅 해주면 되는거쥬=.=
네~~~
이렇게 파라미터가 없는 대표적인 메소드 Math.random();도 공부해봤다!
(Math.random() 메소드의 반환 타입은 double이다.)
4. 메소드 안에서 메소드 호출
메소드의 중첩 호출은 가능하다! 간단히 예를 들면..
public static void threeStar() {
oneStar();
oneStar();
oneStar();
}
public static void onStar() {
System.out.printf("*");
}
threeStar메소드가 수행되면 oneStar 메소드를 호출하고 별하나 찍고, 다시 threeStar메소드 다음 코드로 가서 onStar 메소드를 수행하고 별 하나 찍고, 다시..... ㅇㅇ 이런식으로 메소드 안에서 메소드 호출이 가능하다.
우와 대박 이코드 재밌다
이렇게 깜찍깜찍하고 깔끔하게 직사각형을 그리는 방법도 있네
대박 귀여워... 기억해놔야지!! 오 귀여워
이렇게 해봤다.
아예 세 값을 곱하는 메소드인 trimultiply를 만들었다.
그리고 거기는 double값을 넣을 수 있게 해봤다. (참고: int를 넣으면 double 타입으로 변환된다.)
그리고 메인메서드에서 trimultiply 함수를 사용할 때, 세 파라미터를 집어넣는다.
사실 세 입력값을 그냥 다 곱하는 연산이니까 파라미터 입력 순서는 고려하지 않아도 되게 만들었다.
그래서 메서드를 만들 때 파라미터 타입을 전부 double로 명시해주었다.
어차피 파라미터에 int랑 double밖에 안들어가는 상황이니까..
어떻게하면 코드가 깔끔해지고 사용자가 이해하기 편할지 생각하면서 만들어봤다. 잘했나? >.<
정답 예시도 한번 확인해보자.
정답코드에서는 아예 몇인분인지만 변수로 만들어줬다.
어차피 180g이 1인분의 무게인거랑 5.179가 1g당 칼로리인거는 정해져있으니까..
그리고 정답코드에서도 마찬가지로, 세 값의 곱을 반환하는 메서드를 만들었다.
^.^ 여기까지 하고 코코 잠들어야쥐~~ 여러분 굿나잇 ~~~
'JAVA' 카테고리의 다른 글
[혼자 공부하는 자바] 6/28 01-1 ~ 02-2 (0) | 2020.06.28 |
---|---|
[혼자 공부하는 자바][신용권] 목차 (0) | 2020.06.28 |
[JAVA] 클래스의 구성요소 / 필드(field) (0) | 2020.04.22 |
[JAVA] 변수타입 / 참조형 변수 String / String 클래스 (0) | 2020.04.22 |
[JAVA] 데이터 입력받기 / Scanner 메소드 / 입력 함수 (2) | 2020.04.19 |