공부하다가 변수와 필드가 정확히 구분이 안돼서..
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);
}
}
위 코드에서 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 메서드 내에서 선언된 변수로, 해당 메서드 블록 내에서만 유효하다
필드와 변수를 구분하는 가장 중요한 기준은 선언된 위치.
클래스 블록 내에서 선언되면 필드이고, 메서드 또는 블록 내에서 선언되면 변수입니다.