728x90
자바 변수
- 멤버 변수 (Member Variable)
- 지역 변수 (Local Variable)
- 메소드 안에서 선언한 변수
- 변수는 자신이 선언된 메소드 영역을 자신의 영역이라고 생각한다.
- Variable Scope(변수 가용 영역) > ***변수는 자신의 영역을 절대 벗어날 수 없다.
- 즉, 지역 변수는 자신의 영역 밖에서는 사용 불가능
- 지역 변수의 생명주기 (Life Cycle)
- 변수가 언제 메모리에 생성되고, 언제 메모리에서 소멸되는지
- 생성 : 변수 선언문이 실행되는 순간
- 소멸 : 변수 선언문이 포함된 자신의 영역(메소드)에서 제어가 벗어나는 순간
- ex)
int a = 10;
int c = 30;
m1();
//자신이 속한 메소드가 끝나는 순간, 자동으로 메모리에서 소멸됨.
}//main
public static void m1() {
//b 변수의 영역은 m1 메소드 이다.
int b = 20;
//에러 발생 : a cannot be resolved to a variable
//지역 변수 즉, main 메소드 안에 있는 a의 지역을 벗어낫기 때문
//System.out.println(a);
//m1 메소드 안의 c와 메인메소드 안의 c는 서로 지역변수가 다르기때문에 가능하다.
int c = 40;
System.out.println(c); //m1.c
int d;
//에러발생 : The local variable d may not have been initialized
//System.out.println(d);
}//m1
//매개변수 > 지역변수(m2)
public static void m2(int e) {
int f;
}
메소드 오버로딩 (Method Overloading)
- 동일한 이름 메소드가 인자 리스트를 다양하게 가지면서 여러개 선언하는 기술
- 하는 이유?
- 개발자에게 도움이 되기 때문 > 메소드 이름을 외우기 용이하기 때문에
- 메소드 오버로딩 구현 조건 > 가능
- 매개변수의 갯수
- 매개변수의 자료형
- 메소드 오버로딩 구현 조건 > 불가능
- 매개변수의 이름
- 반환값의 자료형
- ex)
메소드 선언하는 중..
1. public static void test() {} //1번이 존재하고 있는데
2. public static void test() {} //2번을 만드려고하면 같은 이름으로 생성 불가능
3. public static void test(int n) {} //3번은 매개변수가 있기 때문에 만들 수 있음.
4. public static void test(int m) {} //3번이랑 구분할 수 가 없기 때문에 만들 수 없음
5. public static void test(String s) {} //3번과 자료형이 다르기 때문에 가능하다.
6. public static void test(int n, int m) {} //매개변수 갯수가 다르기 때문에 가능하다.
7. public static int test() {} //1번 때문에 불가능하다.
메소드 호출하기(검증 방법)
test(); // 이렇게 호출하면, 매개변수가 없는 1번이 호출됨.
test(100); // 이렇게 호출하면, 매개변수가 있는 3번이 호출됨.
test("홍길동"); //이렇게 호출하면, String 매개변수가 있는 5번이 호출됨.
test(10,20); //이렇게 호출하면, 매개변수가 두개 있는 6번이 호출됨.
- 잘못된 메소드 호출 방법
drawLineEqual(); //==
drawLineAsterisk(); //**
drawLineHash(); //##
//요구사항] 선을 그리는 메소드
public static void drawLineEqual() {
System.out.println("=============================="); //30개
}
//추가사항] 선의 모양 변경
public static void drawLineAsterisk() {
System.out.println("******************************"); //30개
}
//추가사항] 선의 모양 변경2
public static void drawLineHash() {
System.out.println("##############################" ); //30개
}
- 잘된 메소드 호출 방법
drawLine();
drawLine("*");
//for문을 사용하면 더 깔끔하고 좋지만, for문을 사용하지 않았다. 향후에 쓸 예정
public static void drawLine(String s) {
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.print(s);
System.out.println();
// 총 30개
}
728x90
'자바' 카테고리의 다른 글
JAVA STEP 14. DateTime (0) | 2023.02.08 |
---|---|
JAVA STEP 13. Method 예제 모음 (0) | 2023.02.07 |
JAVA STEP 11. Method (0) | 2023.02.07 |
JAVA STEP 10. 자바 예제모음 (0) | 2023.02.06 |
JAVA STEP 9. Operator (0) | 2023.02.06 |