안녕하세요.
#yeoneeblog 여니입니다 :)
* 메소드
* [표현법]
* 접근제한자 예약어(생략가능) 반환할값의자료형 메소드명(매개변수(생략가능)){
* // 실행할 코드;
* return 반환할 값;(반환할 자료형이 void인경우 생략가능)
* }
* 한번 정의한 메소드는 얼마든지 다시 호출해서 사용할수 있다.
*
* 메소드? 실행해야할 명령어의 집합
*/
// 1. 매개변수가 없고, 반환값도 없는 메소드
public void method1() {
System.out.println("매개변수와 반환값이 둘 다 없는 메소드 입니다.");
//return; void메소드의 경우 생략이 가능함. JVM이 자동으로 마지막줄에 생성해준다.
}
// 2. 매개변수가 없고 반환값은 있는 메소드
public int method2() {
System.out.println("매개변수가 없고 반환값은 있는 메소드입니다.");
return (int)(Math.random() * 100 + 1);
}
// 3. 매개변수가 있고 반환값은 없는 메소드 -> setter함수 같은 녀석들
public void method3(int num1, int num2) {
System.out.println("매개변수가 있고 반환값은 없는 메소드입니다. ");
// num1과 num2의 값을 비교하여 결과를 출력하는 메소드
// 최소값 : xx
// 최대값 : xx
int min = 0; // 두수중에 작은값을 보관할 변수
int max = 0; // 두수중에 큰 값을 보관할 변수
if(num1 - num2 > 0) {
min = num2;
max = num1;
}else {
min = num1;
max = num2;
}
System.out.println("최소값 : "+min+"\n최대값 : "+max);
}
// 4. 매개변수도 있고 반환값도 있는 메소드
public int method4(int a, int b) {
System.out.println("매개변수도 있고 반환값도 있는 메소드다");
return a*b;
}
* static 메소드
* [표현법]
* 접근제한자 static 예약어 반환형 메소드명(매개변수){
* 수행내용;
* return;
* }
*
* - 호출 시 객체 생성할 필요가 없음
* - 프로그램 시작시에 정적메모리 영역(static영역)에 메소드가 저장되어있기 때문이다.
* - 클래스명.메소드명(전달값);으로 호출하면 된다.
* - 예약어, 매개변수, return 구문(반환형이 없는경우)는 생략 가능하다.
*
*/
public static void method1() {
System.out.println("매개변수와 반환값이 없는 메소드");
}
public static String method2() {
return "매개변수는 없지만 반환값은 있는 메소드";
}
public static void method3(String name, int age) {
System.out.println(age+"살의 "+name+"님 반갑습니다.");
}
public static int method4(int num1, char op) {
/*
* static 메서드안에서는 static이 아닌 field멤버가 접근이 불가능하다.
* 스태틱메서드는 프로그램 시작시에 정적메모리 영역에 들어가는데,
* 이때 스태틱으로 선언된 필드(전역변수)도 함께 정적메모리 영역에 들어갈것임.
* 따라서 같은 범위안에 있으니 사용이 가능,
* but 스태틱으로 선언되지 않은 전역벽수는 스태틱메모리에 올라가는 시점에 생성이되지 않았으므로
* 사용이 불가능하기때문에 에러 발생.
*
*/
return num1 * count;
}
public static void main(String[] args) {
System.out.println("============================================");
MethodTest1 mt1 = new MethodTest1();
mt1.method1();
int a = mt1.method2();
System.out.println("랜덤값은 ?? "+a);
mt1.method3(2 , 1);// 반드시 자료형을 맞춰서 매개변수에 대입해줘야한다.
System.out.println(mt1.method4(5, 55));
MethodTest1 mt2 = new MethodTest1();
//mt2.method1();
System.out.println("======================================================");
// static 메소드의 경우에는 new 생성자 구문으로 객체를 생성할 필요가 없다.
// static이 붙은 클래스 변수와 마찬가지로 메소드 또한 프로그램 실행시에 정적메모리영역에 저장된다.
// 클래스명.필드명 == static영역의 주소값.
// 클래스명.메서드명() == static영역의 주소값().
MethodTest2.method1();
System.out.println(MethodTest2.method2());
MethodTest2.method3("소연", 13);
MethodTest2.method4(1 , '+');
}
public class Overloadingtest {
// 메소드 오버로딩
// - 한 클래스 내에 같은 메소드명으로 정의할수 있는 방법.
// - 매개변수의 자료형의 개수, 순서가 다르게 작성되어야만 한다.
// - 단, 매개변수명, 접근제한자, 반환형은 메소드 오버로딩에 영향을 주지 않는다.
public void test() {
// 메소드 오버로딩이 잘 되어있는 대표적인 메소드
// System.out.println
}
public void test(int a) {
}
public void test(double a) {
}
public void test(int a , String s) {
}
public void test(int a , double s) {
}
public void test(String s , int a) {
}
public void test(int a, int b) {
}
//
// 매개변수명과는 상관없이 자료형의 갯수와 순서가 같아서 에러가 발생함.
// 즉, 매개변수의 자료형의 개수와 순서가 다르게 작성되어야 한다.
// public void test(int c , int d) {
//
// }
// - 반환형이 다르다고 오버로딩이 적용되지 않는다.
// - 메소드를 호출하는 시점에 매개변수가 동일하기 때문에 에러가 발생한다.
// 즉, 반환형과 상관없이 매개변수의 자료형의 개수와 순서가 다르게 작성되어야한다.
// public int test(int a, int b) {
//
// }
// - 접근제한자가 다르다고 오버로딩이 적용되지 않기때문.
// 즉, 접근제한자와 상관없이 "매개변수의" 자료형의 개수 및 순서가 다르게 작성되어야한다.
// private void test(int a, int b) {
//
// }
'JAVA' 카테고리의 다른 글
자바 변수구분(전역변수, 지역변수) (0) | 2023.05.09 |
---|---|
자바의 클래스구조(필드부,생성자부,메서드부)2 (0) | 2023.05.08 |
자바 클래스의 구조(필드부,생성자부,메소드부) (0) | 2023.05.08 |
자바 이차원배열 다양한 예제 문제 (3) | 2023.05.07 |
자바 이차원 배열 (0) | 2023.05.07 |