Java의 클래스 필드 및 인스턴스 필드

Shikha Chaudhary 2023년10월12일
  1. Java의 지역변수
  2. Java의 입력 매개변수
  3. Java의 클래스 필드
  4. Java에서 클래스 필드의 속성
  5. Java의 인스턴스 필드
  6. Java에서 인스턴스 필드의 속성
Java의 클래스 필드 및 인스턴스 필드

이 기사에서는 Java의 로컬 변수, 입력 매개변수, 클래스 필드 및 인스턴스 필드와 같은 Java 프로그래밍 언어의 기본 용어를 학습합니다.

Java의 지역변수

범위가 블록, 메서드 또는 생성자에 바인딩된 변수를 지역 변수라고 합니다. 예를 들어 testing 방법이 있습니다.

val 변수를 선언하고 이 메소드에 10을 할당합니다. main 블록 안에 print 문을 작성하십시오.

public class Experiment {
  public static void testing() {
    int val = 10;
  }

  public static void main(String[] args) {
    // try printing the local variable of the function demo
    System.out.printf("%d", val);
  }
}

출력:

error: cannot find symbol
      System.out.printf("%d", val);
                              ^
  symbol:   variable val
  location: class Experiment
1 error

이 코드에 val 변수가 있지만 오류가 발생합니다. 여기에서 변수 valtesting() 메서드에 대한 지역 변수입니다.

testing 메소드 내부에 정의되어 있으므로 범위가 제한됩니다. print 문이 이 범위 외부에서 이 변수에 액세스하려고 하면 오류가 발생합니다.

이제 testing 메소드 내부에 print 문을 선언하고 main 블록에서 메소드를 호출합니다.

public class Experiment {
  public static void testing() {
    int val = 10;
    System.out.printf("%d", val);
  }

  public static void main(String[] args) {
    // call the method
    testing();
  }
}

출력:

10

이번에는 print 문은 해당 범위 내에서 변수에 액세스합니다.

이제 이 코드에서 지역 변수를 알아내십시오.

public class Treat {
  public static void main(String[] args) {
    for (int i = 0, i < 1; i++) {
      System.out.println("You will get a Cake if you answer correctly!");
    }
  }
}

변수 i는 지역 변수입니다. 범위는 for 루프로 제한됩니다.

지역 변수에 대한 다음 사항에 유의하십시오.

  • public, protectedprivate와 같은 액세스 수정자를 사용하여 지역 변수를 선언할 수 없습니다.
  • 이러한 변수는 스택 수준에서 내부적으로 구현됩니다.

Java의 입력 매개변수

일부 정보는 실행해야 하지만 다른 정보는 실행되지 않을 수 있습니다. welcome 방법을 살펴보십시오.

public class Greet {
  // a function that does not need any parameter or information
  public static void welcome() {
    System.out.println("Hello, we are happy you visited.");
  }
  public static void main(String[] args) {
    // call the function
    welcome();
  }
}

출력:

Hello, we are happy you visited.

값을 전달하지 않고 메서드를 호출합니다. 우리는 이 메서드에 어떤 정보도 제공하지 않으며 제대로 실행됩니다.

public class Test {
  // a function that needs some information/parameter
  public static void hello(int x) {
    int a;
    System.out.println("Hello, we are happy you visited.");
    if (x < 18) {
      a = 18 - x;
      System.out.printf("Please come back after %d years.", a);
    }
  }
  public static void main(String[] args) {
    int age = 2;

    // call the function
    hello(age);
  }
}

출력:

Hello, we are happy you visited.
Please come back after 16 years.

hello 메소드는 age 값을 전달하지 않으면 제대로 실행되지 않습니다.

메서드는 괄호 안에 정의된 변수 x를 통해 이 값을 받습니다. 변수 x는 입력 매개변수 또는 단순히 매개변수에 불과합니다.

Java에서 입력 매개변수 또는 매개변수는 메소드 실행을 돕기 위해 메소드를 정의하는 데 사용되는 변수입니다.

매개변수와 인수를 혼합하지 마십시오. 그것들은 같은 가치를 갖지만 같은 것은 아닙니다.

public class Test {
  // function to add ages
  public static int totalAge(int age1, int age2) {
    return age1 + age2;
  }
  public static void main(String[] args) {
    int a1 = 10;
    int a2 = 12;

    int total = totalAge(a1, a2);
    System.out.println("Sum of ages: " + total);
  }
}

출력:

Sum of ages: 22

여기서 age1age2는 입력 매개변수입니다.

Java의 클래스 필드

클래스 내의 모든 변수는 Java에서 필드라고 할 수 있습니다. price, quantityname과 같은 모든 변수는 필드입니다.

그러나 quantity 변수는 static 키워드로 시작합니다. 정의에 정적 키워드가 있는 이러한 필드를 Java에서는 클래스 필드라고 합니다.

클래스 필드는 Java에서 클래스 변수 또는 정적 필드라고도 합니다.

class Cake {
  int price;
  static int quantity;
  string name;
}

Java에서 클래스 필드의 속성

다음 포인트는 클래스 필드입니다.

  • 클래스 필드는 static 키워드로 선언해야 합니다.
public static NameOfClass {
  static datatype name_of_variable;
}
  • 클래스의 많은 인스턴스는 클래스 필드를 공유하므로 클래스 필드는 메모리 효율적입니다. 간단히 말해서, 인스턴스 필드의 값은 자바에서 클래스의 모든 인스턴스에 대해 동일합니다.
  • 클래스의 인스턴스와 클래스 이름 자체를 사용하여 Java의 클래스 필드에 액세스할 수 있습니다. 정적 필드에 액세스하는 데 인스턴스가 반드시 필요한 것은 아닙니다.
class Cake {
  int price;
  static int quantity = 10;
  String name;

  public static void main(String[] args) {
    // create the object of Cake class
    Cake c1 = new Cake();

    // Access the class field using the object
    System.out.println(c1.quantity);

    // Access the class field using the class
    System.out.println(Cake.quantity);
  }
}

출력:

10
10

위의 예에서 c1.quantity와 같은 dot 연산자를 사용하여 객체를 사용하여 클래스 필드에 액세스합니다. 마찬가지로 클래스별로 변수에 액세스하려면 Cake.quantity라는 클래스 이름을 사용합니다.

Java의 인스턴스 필드

public class Cake {
  int cost;
  String flavor;

  public Cake(int cost, String flavor) {
    this.cost = cost;
    this.flavor = flavor;
  }

  public int expense() {
    return cost;
  }

  public static void main(String[] args) {
    Cake cake1 = new Cake(1000, "Choco lava");
    Cake cake2 = new Cake(2000, "Pineapple");

    System.out.println(cake1.expense());
    System.out.println(cake2.expense());
  }
}

출력:

1000
2000

Cake 클래스 내부에는 costflavor라는 두 개의 변수가 있습니다. cake1cake2를 생성합니다.

다른 개체에 대해 다른 값을 가질 수 있는 이러한 변수를 인스턴스 변수 또는 인스턴스 필드라고 합니다.

Java에서 인스턴스 필드의 속성

Java의 인스턴스 필드는 비정적 변수라고도 합니다. 다음은 인스턴스 필드에 대한 몇 가지 사항입니다.

  • 인스턴스 필드는 Java의 정적 키워드로 not 선언됩니다.
public class ClassName {
  datatype variable_name;
}
  • 모든 인스턴스와 공유되지 않습니다. 각 인스턴스는 Java의 인스턴스 필드에 대해 고유한 값을 가질 수 있습니다.
  • 클래스 자체의 도움으로 클래스 필드에 액세스하는 방법을 보았습니다. 글쎄요, 이것은 Java의 인스턴스 필드에 해당되지 않습니다. Java의 인스턴스 필드에 액세스하려면 instance/object가 필요합니다.
  • Java에서 인스턴스 필드와 함께 모든 액세스 지정자를 사용할 수 있습니다. Java의 필드에 대한 자세한 내용은 이 문서를 참조하십시오.