7.1.2フィールドとゾーン変数の初期値
6999 ワード
フィールドと領域変数の別の違いは、初期値です.フィールドは直接初期化する必要がなく、強制的に初期化されます.逆に、領域変数を直接初期化しない場合、ストレージ領域は空のままであるため、値の出力を試みたときにエラーが発生します.これは、フィールドと領域変数の違いではなく、それぞれのメモリ領域の特徴です.hipメモリは空白を格納できないため、hipメモリにあるフィールドは強制初期化され、スタックメモリは強制初期化されないため、ここに格納されている領域変数にも特徴があります.
次の例では、フィールドm、n、および領域変数kを初期化しない.初期化されていない領域変数を出力しようとするとエラーが発生しますが、intデータ型の2つのフィールドから値0が出力されます.フィールドが強制的に初期化されるためです.
次の例では、フィールドm、n、および領域変数kを初期化しない.初期化されていない領域変数を出力しようとするとエラーが発生しますが、intデータ型の2つのフィールドから値0が出力されます.フィールドが強制的に初期化されるためです.
class A {
int m;
int n;
void work1() {
int k;
//System.out.println(l); // 초깃값 없이 출력을 시도해 오류 발생
}
}
public class jh {
public static void main(String[] args) {
A a = new A();
System.out.println(a.m); // 0
System.out.println(a.n);
// a.work1();
}
}
5章で述べたように,強制初期化値はフィールドのデータ型によって異なる.基本データ型の場合、「いいえ」と呼ばれるデータ型をfalseにリセットし、整数型を0にリセットし、実数型を0.0にリセットします.それ以外に、すべてのリファレンスタイプは、任意の場所を指すnull値がないことを示すように初期化されます.実習
class A {
boolean m1;
int m2;
double m3;
String m4;
void printFieldValue() {
System.out.println(m1);
System.out.println(m2);
System.out.println(m3);
System.out.println(m4);
// 필드는 초기화하지 않아도 값이 강제 초기화돼 출력 가능
}
void printLocalVariable() {
int k;
// System.out.println(k); // 지역 변수를 초기화하지 않아 오류 발생
}
}
public class jh {
public static void main(String[] args) {
// 클래스를 활용해 객체 생성
A a = new A();
// 객체 활용
a.printFieldValue();
}
}
結果Reference
この問題について(7.1.2フィールドとゾーン変数の初期値), 我々は、より多くの情報をここで見つけました https://velog.io/@1205kjw/7.1.2-필드와-지역-변수의-초깃값テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol