method 메서드의 정의
함수라고도 불리는 메소드는 특정한 작업이나 논리를 구성하는 코드를 괄호로 묶어 놓은 것
다른 언어의 <함수> 같은 개념
<메서드의 사용>
이름(): 메서드
단, 키워드() 는 메서드가 아니다 자바 예약명이다 ex, for() if() switch() 등등
f (x) = 2x+1
메서드 매개변수 리턴값
이름
f(1) 통채로를 리턴값으로 볼 줄 알아야한다
단, 리턴값이 있을 경우만!
<메서드의 선언>
1) 리턴타입 메서드명(자료형 매개변수1,....) {
실행할 문장
return 리턴값;
}
2) 리턴타입 메서드명(자료형 매개변수1,....){
실행할 문장
}
3) void 메서드명(){
실행할문장
}
메서드 선언 순서
1. 메서드 명을 생각한다
2. 매개변수를 생각한다
2. 실행할 문장과 리턴값을 생각한다
메서드 작성
int add(int num1, int num2){
syso("덧셈 메서드 입니다")
return num1+num2;
}
================================
메서드 실행
int result = add(3, 7);
syso(result);
메서드 생성하고 호출하기
package day10;
public class MethodTest {
static int add(int num1, int num2){
System.out.println("add 메서드 입니다.");
return num1+num2;
}
public static void main(String[] args) {
//컴파일 하자마자 자동으로 실행되는 메서드가 바로 main메서드이다
//add(3,7);
System.out.println(add(3,7));
}
}
add 메서드 입니다.
10
메서드의 소속을 알려주어 사용하기
package day10;
public class MethodTest {
int add(int num1, int num2){
System.out.println("add 메서드 입니다.");
return num1+num2;
}
public static void main(String[] args) {
//컴파일 하자마자 자동으로 실행되는 메서드가 바로 main메서드이다
MethodTest m = new MethodTest();
System.out.println(m.add(5, 7));
}
}
add 메서드 입니다.
12
MethodTest 클래스 안에 있는 add메서드를 불러오기 위해서
MethodTest m = new MethodTest();
그 후에 m뒤에 점을 찍으면 자동으로 add메서드가 나오는 것을 확인할 수 있다
m.add(5, 7) => 통째로를 리턴값으로 볼 줄 알아야 한다
System.out.println(m.add(5, 7));
메서드 주의사항
1. 매개변수가 없는 메서드는 외부에서 값을 전달받을 수 없다
2. 리턴값이 있는 메서드는 사용시 전체를 리턴값으로 보자
3. 메서드 내부에 다른 메서드를 선언할 수 없다 (단 , 사용은 가능하다)
4. 메서드 선언시 매개변수는 저장공간이고 사용시에는 값을 그 자리 순서에 맞게 넣어준다
가급적이면 매개변수와 인자를 일치시켜서 작성하는 것이 좋다
매개변수가 없는 메소드는 출력 되지 않는다
전역변수: 어디서든 사용 가능한 변수
지역변수: 특정 지역 안에서 선언되어 그 지역 안에서만 사용할 수 있는 변수. 그 지역이란, 중괄호 {}
지역 변수는 선언과 동시에 메모리 공간이 할당 되지만, 중괄호를 빠져나가면 그와 동시에 소멸
package javaFirstClass;
public class method_prac { //method 기능상자
public static void aaa(String[] args) {
// TODO Auto-generated method stub
int num1=1;
int num2=7;
System.out.println("1+7=" + (num1 + num2));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int num1=5;
int num2=7;
System.out.println("5+7=" + (num1 + num2));
}
//자바의규칙 : 모든 프로그램의 시작은 main 메서드 부터 시작한다!
public static void bbb(String[] args) {
// TODO Auto-generated method stub
int num1=2;
int num2=7;
System.out.println("2+7=" + (num1 + num2));
}
}
aaa -> main -> bbb
순서대로 진행되는 것이 아닌, 자바에서는 main 메서드부터 시작한다
package javaFirstClass;
public class method_prac { //method 기능상자
public static void main(String[] args) {
// TODO Auto-generated method stub
double myHeight=173.5;
hiEveryone(30, 160.5);
hiEveryone(40, myHeight); //40, myHeight => 매개변수(파라미터)
byeEveryone();
}
public static void hiEveryone(int age, double height) { //int age, double height => 인자
System.out.println("좋은 저녁 입니다");
System.out.println("제 나이는 " + age + "세 입니다.");
System.out.println("제 키는 " + height + "cm 입니다.");
}
public static void byeEveryone() {
System.out.println("See you again!!");
}
}
좋은 저녁 입니다
제 나이는 30세 입니다.
제 키는 160.5cm 입니다.
좋은 저녁 입니다
제 나이는 40세 입니다.
제 키는 173.5cm 입니다.
See you again!!
package javaFirstClass;
public class 메소드_03 {
//지역변수
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean ste=true;
int num1=11;
if(ste) {
//int num1 =22; 주석을 해제하면 컴파일 오류 발생
int num2=22; //중복 선언이 아니므로 문제 없이 출력 됨
num1++;
System.out.println(num1);
}
{
int num2=33;
num2++;
System.out.println(num2);
//이처럼 영역이 다르더라도, 변수 이름을 중복하여 선언하는 것은 좋은 코드가 아니다!!
}
}
}
12
34
영역이 다르더라도, 변수 이름을 중복하여 선언하는 것은 좋은 코드가 아니다!!
package javaFirstClass;
public class factorial재귀호출 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//팩토리얼 = 3! = 3*2*1
System.out.println("3 factorial: " + factorial(3));
System.out.println("12 factorial: " + factorial(12));
}
public static int factorial(int n) {
if(n == 1) {
return 1;
}
else {
return n*factorial(n-1);
}
}
}
'Dev. > java' 카테고리의 다른 글
Java 형변환 (0) | 2022.05.10 |
---|---|
Java 복습문제 02 (0) | 2022.05.09 |
java 복습 문제 (0) | 2022.05.04 |
클래스패스 (class path)/ Package (0) | 2022.05.02 |
자바의 이름 규칙 / 생성자 (0) | 2022.05.02 |
댓글