f (x) = 2x + 1
메소드 매개 리턴값;
이름 변수
①리턴타입 ②메소드명(③자료형 매개변수, 자료형 매개변수...) {
④호출 시 실행할 문장;
⑤return 리턴값;
}
① return 뒤의 값에 타입에 맞는 자료형을 작성해준다. 리턴값이 없을 때는 void로 작성한다.
② 동사형으로 작성한다.ex) eat("밥") caculate(2,3);
③ 생략가능, 하지만 생략시에는 외부(사용하는 곳)에서 값을 전달 받을 수 없고, 여러 값들을 전달받아야 할 때에는 ,로 구분하여 값의 갯수 만큼 선언해준다.
④ 생략가능
⑤ 생략가능
(두 정수의 덧셈 메소드)
1. 메소드 명을 생각한다. (리턴 타입은 결정 전임으로 void)
void add(){
}
void add (int num1, int num2){
}
void add (int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2;
}
void add(int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2;
return result;
}
int add(int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2;
return result;
}
메소드는 클래스 내부에 있으므로 그 메소드가 속해있는 클래스 타입으로 먼저 변수를 만들어 주어야 한다.
package day07;
public class MethodTest {
// 메인 메소드에서 클래스 타입으로 변수를 만들어준다.(클래스 초기화)
public static void main(String[] args) {
MethodTest m = new MethodTest();
//1+2메소드 값은 3을 리턴, 통째로 값임으로 아래와 같이 출력
System.out.println(m.add(1,2));
}
//다른 메소드를 정의한다.
int add(int num1, int num2){
System.out.println("두 정수의 덧셈 메소드");
int result = num1 + num2;
return result;
}
}
클래스명 변수명 = new 클래스명();
변수.메소드명(값1, 값2....) // 매개변수의 개수와 타입에 맞게 값을 넘겨준다.
변수.메소드명() // 매개변수가 없다면 그대로 이름으로 사용
메소드 사용 부분은 선언부 마지막에 return 값이 있다면 사용한 부분 통째로 그 리턴값으로 보아야 한다. 단, return 값이 없다면 절대 값으로 봐서는 안된다.
메인 메소드에서 메소드 사용은 생략
void printNum() {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
int sumNum2(int n) {
int result = 0;
for (int i = 1; i <= n; i++) {
result += i;
}
return (result);
}
float divide(int num1, int num2) {
float result = (float)num1 / num2;
return result;
}
void printString(int n) {
for (int i = 0; i < n; i++) {
System.out.println("자바를 공부하자!");
}
}
int sumOrderNum(int n, int m) {
int result = 0;
if(n > m) {
System.out.println("첫 번째 매개변수는 두 번째 매개변수보다 작아야 합니다.");
}else {
for (int i = n; i <= m ; i++) {
result += i;
}
}
return (result);
}
String makeUpper2(String str) {
String result = "";
// 받은 문자열 길이만큼 배열을 돌면서 새로운 변수에 값을 넣어 대문자를 완성한다.
for (int i = 0; i < str.length(); i++) {
// 만약 해당 문자가 아스키 코드의 값보다 크다는 것은 소문자라는 것임.
if(str.charAt(i) >= 97) {
// 해당 소문자를 대문자 코드 10진수까지 감소시켜서 문자열로 형변환해서 값에다가 담는다.
result += (char)(str.charAt(i) - 32);
}else {
// 그 외는 원래 대문자라서 그냥 담는다.
result += str.charAt(i);
}
}
return result;
}
String makeReserve2(String str) {
// 결과를 담을 변수를 만든다.
String result = "";
// 문자열의 길이만큼 반복을 시킨다.
for (int i = 0; i < str.length(); i++) {
// 결과는 해당 문자열의 자리를 아래와 같이 길이의-1-i를 하면 거꾸로 담긴다.
result+= str.charAt(str.length()-1-i);
}
return result;
}
boolean checkStr2 (String str) {
// 매개변수와 받은 문자열과 비교할 문자열 변수를 만든다.
String dumiNum = "";
// 매개변수의 문자열만큼 반복을 시킨다.
for (int i = 0; i < str.length(); i++) {
// 이 문자열이 숫자로 이루어진 부분만 추출하여 비교할 문자열에 넣는다.
if(str.charAt(i) >= 48 && str.charAt(i) <= 57) {
dumiNum += str.charAt(i);
}
}
// 추출한 문자열과 매개변수의 문자열을 비교한다., 참이면 true를 거짓이면 false를 리턴한다.
return dumiNum.equals(str) ? true : false;
String makeUpperLower2(String str) {
String result = "";
// 받은 문자열 길이만큼 배열을 돌면서 새로운 변수에 값을 넣어 대문자를 완성한다.
for (int i = 0; i < str.length(); i++) {
// 만약 해당 문자가 아스키 코드의 값보다 크다는 것은 소문자라는 것임.
if(str.charAt(i) >= 97) {
// 해당 소문자를 대문자 코드 10진수까지 감소시켜서 문자열로 형변환해서 값에다가 담는다.
result += (char)(str.charAt(i) - 32);
}else {
// 대문자들은 소문자로 바꿔 준다.
result += (char)(str.charAt(i) + 32);
}
}
return result;
}
String makeHangle2(int num) {
String [] hangle = {"공","일","이","삼","사","오","육","칠","팔","구"};
String numToStr = num + "";
String result = "";
for (int i = 0; i < numToStr.length(); i++) {
// charAt은 char 타입임으로 문자열로 바꿔주기 위해서 ""을 더한다.(자동형변환);
result += hangle[Integer.parseInt(numToStr.charAt(i)+"")];
}
return result;
}