JAVA/기초

변수의 종류

jjhim531 2024. 7. 13. 07:47
반응형

1. 로컬변수(=지역변수)

- 메서드 내부에서 선언됨. 메서드 수행이 끝나면 소멸되는 변수

- 초기값을 지정한 후 사용할 수 있음 (필수!!수동!!항상 직접!!)

ex) int i = 5;

- 조건문, 반복문 블록 내에서 선언한다면 수행이 끝나면 소멸되므로 계속 사용하기 위해서는 블록 밖에서 선언 필요.

- 접근 지정자를 사용할 수 없음 : 해당 블록 내에서만 유효하기에 어차피 다른 메소드나 클래스에서 접근할 수 없으므로 접근지정자가 무의미하다.

2.  멤버변수( = 필드)

- 종류 : 클래스변수, 인스턴스 변수

- 클래스에 선언됨. 굳이 0을 안써줘도 기본적으로 0으로 초기화됨.

- static이 붙으면 클래스변수, 객체를 생성하면 인스턴스 변수이다.

package class1;

public class Student {
	String name;
	int age;
	int grade;

}

- 위의 코드블럭에서 name,  age,  grade가 멤버변수이다.

3.  매개변수(=prameter)

- 메서드 호출 시 '전달하는 값'을 가지고 있는 변수(지역변수처럼 선언된 곳부터 수행이 끝날 때까지 유효함)

- 매개변수도 지역변수의 한 종류임

- 자동 초기화가 지원됨.

int sum;
sum = add(1,2); // add 메서드 호출하면서 1,2 값 전달
System.out.println(sum);
static int add(int a, int b){
int c= a+b; // a, b가 매개변수
return c;
}

 

* 인스턴스(=클래스 객체) : 메모리 상에 생성된 클래스 / 모든 인스턴스는 래퍼런스 변수만을 통해서 사용 가능

4. 클래스 변수 

- 클래스 내부에서 static 키워드로 선언된 변수

- 객체와는 별개

- 여러 객체에서 공통으로 사용하고 싶을 때 정의.

- 객체를 생성하지 않아도 클래스명으로 바로 접근 가능

- 방식 : 클래스명.클래스변수명

class Exam{
    int age;
    ...
    ...
    Exam.age = 1; // 이런 식으로 접근 가능
    
}

5. 인스턴스 변수 

- 클래스 내부에서 선언되어 일부 메소드 블록 안과 밖에서 모두 사용가능.(static메소드를 제외한 클래스 전체)

- 개별적인 저장공간으로 객체(인스턴스)마다 다른값 저장 가능

- 객체(인스턴스)를 여러개 생성했다면 각각의 참조변수명으로 접근이 가능하고 각각에 값을 저장할 수 있음.

- 클래스의 객체가 메모리에 존재할 때까지.

-접근 지정자를 사용하여 접근 제어 가능.

- 참조변수를 통해서만 접근 가능

class Exam{
	String name;// 인스턴스 변수
       ...
       ....
        Exem e1 = new Exem();// 클래스명으로 객체(인스턴스) 생성
        e1.name = "국어"; // 참조변수 명으로 접근
    
        Exem e2 = new Exem();// 클래스명으로 객체(인스턴스) 생성
        e2.name = "영어";// 참조변수 명으로 접근
}

- 객체나 인스턴스를 생성만 하고 참조변수가 없으면 가비지 컬렉터에 의해 자동제거됨.

- 수정 : setter메서드를 통해 수정 가능.

 

6. 래퍼런스변수(=참조변수)

- 참조변수(메모리 상에 생성된 인스턴스를 가리키는 데(즉, 주소값을 가리키는데 ) 사용되는 변수)

- 인스턴스의 멤버변수와 메서드를 가리킬수 있도록 되어 잇음.

- 선언만 한 경우에는 초기값 null을 가지게된다.

- 컴파일 시점에는 크기를 알 수 없고 실행할 떄 new명령어를 만나면 그제서야 메모리에 할당받게 된다.

> 방식

레퍼런스 변수.멤버변수
레퍼런스 변수.메서드()

 

 

 

 

< 요약>

클래스 영역(=멤버변수)
(클래스 외부 사용가능 여부 - 접근제어자에 따라 다름)
클래스변수(static)
인스턴스 변수(=참조변수(reference))
(단, null값만 있는 경우엔 인스턴스 변수가 아님)
(클래스명.참조변수명 = new 클래스명();)
메서드 영역
(접근 제어자를 사용하지 않음)
지역변수
매개변수(=parameter)

 

7. 카운터 변수 

* 반복문 내에서 특정 값을 세기 위해 사용하는 변수

public class CounterExample {
    public static void main(String[] args) {
        // for 루프를 사용한 카운터 변수
        System.out.println("for 루프를 사용한 예제:");
        for (int i = 1; i <= 10; i++) {
            System.out.println("카운터: " + i);
        }
    }
}

* 여러 개가 필요할 때 : i ,j, k,.....

 

 

 

728x90
반응형