728x90
멤버변수와 지역변수
변수를 선언하는 위치에 따라 멤버변수와 지역변수로 나눌 수 있다.
멤버변수는 선언 위치가 클래스 영역이고, 지역변수는 선언 위치가 메소드나 생성자 내부이다.
멤버 변수 : 클래스 변수와 인스턴스 변수
멤버변수는 또 클래스 변수와 인스턴스 변수로 나눌 수 있다.
클래스 변수는 모든 객체가 공통적으로 똑같은 속성을 가질 때 사용한다.
그리고 static을 붙여서 만들 수 있고, 객체를 생성하지 않아도 사용할 수 있다는 특징이 있다.
즉, 전역 변수의 성질을 가지고 있음을 알 수 있다.
인스턴스 변수는 각각의 객체마다 개별적인 속성을 가질 때 사용한다.
그리고 클래스 변수와 다르게 객체 생성을 해야 사용할 수 있다는 특징을 가지고 있다.
지역 변수
지역변수는 메소드 내에 선언되어 메소드 내에서만 사용할 수 있는 변수로
메소드가 종료되면 자동으로 소멸된다.
멤버 변수와 전역변수
그런데 위에서 클래스 변수가 전역 변수의 성질을 가지고 있다고 했는데
그렇다면 과연 전역 변수와 멤버 변수가 같다고 할 수 있을까? 대답은 아니라고 할 수 있다.
자바에서는 캡슐화를 통해 은닉성을 보장한다는 특징을 가지고 있는데
이는 전역 변수의 개념과는 반대라고 할 수 있다.
자바에서의 전역 변수 역할은 클래스 변수의 static으로 할 수 있다.
마지막으로 간단하게 멤버변수, 지역변수를 사용한 예제를 보도록 하자.
public class Test {
int insVal = 1; // 인스턴스 변수
static String clsVal ="클래스 변수"; // 클래스 변수
}
class OtherTest{
int insVal2 = 2; // 인스턴스 변수
static int clsVal = 3; // 클래스 변수
public static void main(String[] args) {
// 클래스 변수는 객체 생성 없이 사용 가능
System.out.println("Test의 클래스변수 값 : " + Test.clsVal);
System.out.println("OtherTest의 클래스변수 값 : " + clsVal);
String localVal = "지역 변수";
System.out.println("지역변수 값 : " + localVal);
// 인스턴스 변수는 객체 생성 후 사용
// System.out.println("Test의 인스턴스변수 값 : " + insVal);
// System.out.println("OtherTest의 인스턴스변수 값 : " + insVal2);
// 객체 생성
Test test = new Test();
OtherTest other = new OtherTest();
System.out.println("Test의 인스턴스변수 값 : " + test.insVal);
System.out.println("OtherTest의 인스턴스변수 값 : " + other.insVal2);
}
}
// 결과
Test의 클래스변수 값 : 클래스 변수
OtherTest의 클래스변수 값 : 3
지역변수 값 : 지역 변수
Test의 인스턴스변수 값 : 1
OtherTest의 인스턴스변수 값 : 2
728x90
'국비 지원 > JAVA' 카테고리의 다른 글
[JAVA] 오버로딩과 this() (0) | 2023.05.06 |
---|---|
[JAVA] 필드, 생성자 - 기본 생성자, 메소드 (0) | 2023.05.06 |
[JAVA] 배열 생성 new 연산자 (0) | 2023.05.03 |
[JAVA] 문자열 비교하기 : ==와 equals() (0) | 2023.05.02 |
[JAVA] Scanner에서 next()와 nextLine()의 주의할 점 (2) (0) | 2023.04.30 |