변수와 필드

seni·2024년 6월 24일

JAVA

목록 보기
25/34

공부하다가 변수와 필드가 정확히 구분이 안돼서..

package second;

import java.util.Scanner;

public class ScannerWhile4 {
    // 필드 (클래스 내부에 선언된 변수)
    // sum은 ScannerWhile4 클래스의 필드입니다.
    // 이 필드는 클래스의 모든 메서드에서 사용할 수 있습니다.
    public static int sum = 0;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // 변수 (main 메서드 내부에 선언된 변수)
        // sum 변수는 main 메서드 내에서만 사용됩니다.
        // main 메서드가 종료되면 sum 변수도 소멸됩니다.
        // sum 변수와 필드 sum은 별개의 변수입니다.
        int sum = 0;

        while (true) {
            System.out.println("정수를 입력하세요 (0을 입력하면 종료):");
            int number = input.nextInt();

            if (number == 0) {
                System.out.println("프로그램이 종료됩니다.");
                break;
            }

            // 필드 sum에 사용자가 입력한 number 값을 누적하여 저장
            ScannerWhile4.sum += number;

            // main 메서드 내의 sum 변수에도 사용자가 입력한 number 값을 누적하여 저장
            sum += number;
        }

        System.out.println("입력한 모든 정수의 합(필드): " + ScannerWhile4.sum);
        System.out.println("입력한 모든 정수의 합(변수): " + sum);
    }
}

필드와 변수 구분

필드(Field)

  • ScannerWhile4 클래스 내부에서 public static int sum = 0;와 같이 선언된 변수
  • 클래스 내의 모든 메서드에서 접근 가능한 클래스 변수
  • 객체의 상태를 나타내며, 객체 생성과 관계없이 사용할 수 있다
  • ScannerWhile4.sum 형태로 접근한다

변수(Variable)

  • main 메서드 내에서 int sum = 0;와 같이 선언된 변수이다
  • 메서드 내에서만 사용 가능한 지역 변수
  • 메서드가 실행될 때 생성되고, 메서드 실행이 종료되면 소멸된다
  • sum 형태로 접근한다

    위 코드에서 ScannerWhile4.sum은 클래스 ScannerWhile4의 필드로, 모든 객체에 공통적으로 적용되는 변수입니다. sum 변수는 main 메서드 내에서만 사용되며, 메서드 실행 중에만 유효합니다.

구분하는 주요 기준은 선언된 위치

필드

  • 선언 위치 : 클래스 블록 내, 메서드 블록 외부
  • 소속 : 클래스에 소속된 변수, 클래스의 인스턴스(객체)가 가지는 속성(상태)이다
  • 생명 주기 : 객체가 생성될 때 초기화되고, 객체가 소멸될 때까지 유지된다
//예시)
public class Example {
    // 이 부분은 필드 선언
    String company;
    int id;
}

변수

  • 선언 위치 : 메서드, 생성자, 또는 블록 내
  • 소속 : 메서드나 블록에 소속된 변수, 해당 블록이 실행될 때만 존재
  • 생명 주기 : 변수가 선언된 블록이 실행될 때 생성되고, 블록을 벗어나면 소멸된다

구체적 예시

public class Example {
    // 필드 선언
    String company;
    int id;

    // 생성자
    public Example(String company, int id) {
        this.company = company;
        this.id = id;
    }

    // 메서드
    public void displayInfo() {
        // 로컬 변수 선언
        int localVariable = 10;
        System.out.println("Company: " + company);
        System.out.println("ID: " + id);
        System.out.println("Local Variable: " + localVariable);
    }

    public static void main(String[] args) {
        Example example = new Example("OpenAI", 1);
        example.displayInfo();
    }
}

필드 : company와 id는 클래스 Example의 필드입니다. 클래스의 모든 인스턴스는 이 필드들을 가지고 있다
변수 : localVariable은 displayInfo 메서드 내에서 선언된 변수로, 해당 메서드 블록 내에서만 유효하다

필드와 변수를 구분하는 가장 중요한 기준은 선언된 위치.
클래스 블록 내에서 선언되면 필드이고, 메서드 또는 블록 내에서 선언되면 변수입니다.

profile
개발일지

0개의 댓글