지역변수와 전역변수
- 전역변수
public class Ex02_MyClassTest2 {
Car myCar;
Car newCar = new Car(); // Ex02_MyClassTest2 클래스의 전역 변수
public static void main(String[] args) {
System.out.println("** Boyfriend class Test **");
}
}
Car myCar; 같은 경우 인스턴스 이름만 정의 했음을 의미한다,
객체화(메모리 할당)은 되지 않았다.
이름만 정의 했으면 값은 null 이고 ,
클래스 내에 선언한 멤버들은 전역으로 선언되었다고 보면된다.
메서드가 static 으로 선언되었다면 , 전역변수 정의도 static을 사용하여주면 간편하게 사용할 수 있다.
- 지역변수
지역변수란 메서드 내부에 정의된 변수 또는 인자(매개변수)를 의미한다.
블럭(block) 내에서만 적용이 가능하다.
클래스 외부에ㅓ도 접근이 불가능하고
전역변수와 동일한 이름의 지역변수를 정의한다면 지역변수를 우선적용한다.
초기화 후 사용가능하다.
단 , 지역변수 선언위치에 따라 지역변수 선언 이후부터 지역변수를 우선한다
public int money;
public void moneyUp(int mymoney) {
money+=mymoney;
System.out.println("** moneyUp money ="+money); // 전역변수 money를 의미
int money = 4000;
// 메서드의 첫행으로 옮긴다면 두 실행문의 money 는 지역변수가 적용
System.out.println("** 지역변수 money ="+money); //지역변수 money 를 의미
}
public void moneyUp(int mymoney) {
if (mymoney>10000) {
String name= "홍길동"; // if 문 안에서만 접근 가능한 지역변수
}
System.out.println(name);//if 문 안에있는 지역변수라 인식 불가 컴파일 오류
}
클래스의 멤버 메서드
- return 값
return 이 있다면 type 를 지정하고 없으면 void 로 선언해줘야 한다.
메서드의 실행결과 return 타입에 해당하는 결과값을 제공한다
return 명령어를 void 메서드에서 사용한다면 메서드 종료를 의미한다.
- 매개변수
메서드의 지역변수이며 , 모든 타입을 정의 가능하다.(클래스도 포함된다 , 클래스도 타입이기 때문)
단 , 메서드는 메서드의 인자가 될 수 없다.
- 매개변수의 값 전달방법
- CallByValue (기본자료형, String -> 매개변수의 값 전달)
- CallByReference (참조자료형: 배열, 인스턴스 -> 주소전달)
- 메서드명의 규칙
식별자의 규칙을 준수한다.
소문자로 시작하며 예약어를 제외한다.
동일한 이름의 메서드명을 허용한다 , 단 동일한 이름의 메서드들이 매개변수나 타입이 달라야함.
- 메서드의 구성
public void juiceCafe1() { // 메서드의 header
실행문 // 메서드의 body
}
static 메서드에서의 noneStatic 메서드의 사용
int price = 5000; //맴버 변수, 클래스의 전역(Global)변수
public void juiceCafe1() {
System.out.println("무슨 주스를 원하시나요 ?");
System.out.println("메서드 구성 : 매개변수 X void O");
System.out.println();
}
public void juiceCafe2(String s , int n) {
if (n<5) {
System.out.println("다섯잔 이상 주문 해주세요"); return;
}
System.out.printf("주문 내역 안내 : %s 쥬스 %d 잔%n", s , n);
System.out.println("메서드 구성 : 매개변수 O void O");
System.out.println();
}
public static void main(String[] args) {
//메서드 호출
Ex03_Method ex03 = new Ex03_Method();
ex03.juiceCafe1();
ex03.juiceCafe2("수박", 15);
}
같은 하나의 클래스라고 하더라도 , static 메서드에서 noneStatic 메서드를 사용하기 위해서는 인스턴스 생성이 필요하다.
인스턴스를 생성한후 인스턴스메서드를 사용하는것이다.
타입과 인자의 위치와 갯수가 맞지 않는다면 컴파일 오류가 발생한다.
반환 메서드의 복합 구문과 단일구문
- 반환값만 있는 메서드
public String juiceCafe3() {
return"주스 한잔의 가격은 "+price+"원 입니다.";
}
단순 호출하여 실행할 수 있다.
System.out.println(ex03.juiceCafe3());
- 실행문을 포함하는 반환 메서드
public int juiceCafe4(String s, int n) {
System.out.println();
System.out.printf("%s 쥬스 %d 잔, 총액은 ? %n",s , n);
System.out.println("메서드 구성 : 매개변수 O void X"); // 1)출력하고 나서
return n * price;
}
실행문이 먼저 호출된후 , 반환값과 함께 println 실행됨.
System.out.println("총액 : "+ex03.juiceCafe4("오렌지", 15)); // 2) 실행
- return 문은 메서드 끝 라인에 적용함.
- return 과 동시에 메서드는 종료된다.
'Developer > JAVA' 카테고리의 다른 글
JAVA , 매개변수의 전달 방식 : CallByValue와 CallByReference (0) | 2024.08.03 |
---|---|
JAVA ,Method OverLoading 오버로딩에 대하여 (0) | 2024.08.03 |
JAVA , 클래스와 인스턴스(객체), 객체의 의미 , 나만의 클래스 만들기 (0) | 2024.08.02 |
JAVA , 배열 예제 (서치 알고리즘 , 정렬 알고리즘 ,Arrays) (0) | 2024.08.01 |
JAVA, 배열 (0) | 2024.08.01 |