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
변수가 있지만 오류가 발생합니다. 여기에서 변수 val
은 testing()
메서드에 대한 지역 변수입니다.
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
,protected
및private
와 같은 액세스 수정자를 사용하여 지역 변수를 선언할 수 없습니다.- 이러한 변수는 스택 수준에서 내부적으로 구현됩니다.
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
여기서 age1
및 age2
는 입력 매개변수입니다.
Java의 클래스 필드
클래스 내의 모든 변수는 Java에서 필드
라고 할 수 있습니다. price
, quantity
및 name
과 같은 모든 변수는 필드입니다.
그러나 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
클래스 내부에는 cost
와 flavor
라는 두 개의 변수가 있습니다. cake1
과 cake2
를 생성합니다.
다른 개체에 대해 다른 값을 가질 수 있는 이러한 변수를 인스턴스 변수
또는 인스턴스 필드
라고 합니다.
Java에서 인스턴스 필드
의 속성
Java의 인스턴스 필드는 비정적 변수라고도 합니다. 다음은 인스턴스 필드에 대한 몇 가지 사항입니다.
- 인스턴스 필드는 Java의
정적
키워드로not
선언됩니다.
public class ClassName {
datatype variable_name;
}
- 모든 인스턴스와 공유되지 않습니다. 각 인스턴스는 Java의 인스턴스 필드에 대해 고유한 값을 가질 수 있습니다.
- 클래스 자체의 도움으로 클래스 필드에 액세스하는 방법을 보았습니다. 글쎄요, 이것은 Java의 인스턴스 필드에 해당되지 않습니다. Java의 인스턴스 필드에 액세스하려면
instance/object
가 필요합니다. - Java에서 인스턴스 필드와 함께 모든 액세스 지정자를 사용할 수 있습니다. Java의 필드에 대한 자세한 내용은 이 문서를 참조하십시오.