Developer/JAVA

JAVA, 클래스의 멤버 메서드 , 지역변수와 전역변수

단님 2024. 8. 2. 01:08
728x90
지역변수와 전역변수
  • 전역변수
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 메서드에서 사용한다면 메서드 종료를 의미한다.

 

  • 매개변수

메서드의 지역변수이며 , 모든 타입을 정의 가능하다.(클래스도 포함된다 , 클래스도 타입이기 때문)

단 , 메서드는 메서드의 인자가 될 수 없다.

 

  • 매개변수의 값 전달방법
  1. CallByValue (기본자료형, String -> 매개변수의전달)
  2. 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 과 동시에 메서드는 종료된다.