1. ホーム

ローカル変数sumが初期化されていない可能性がある

2022-02-20 04:43:09
<パス


今日、プログラミングの問題をやっていて、この考え方がとてもよく理解できました
だから、もっとよく知ることができた

package com.itcast.demo3;

public class People {
	private String name;
    private int age;
 
    String getName() {
        return name;
    }
    int getAge() {
        return age;
    }
}


package com.itcast.demo3;
import com.itcast.demo3.*;
public class Demo {
	public static void main(String[] as){
        People p;
         int a;
        p = new People();
// t1= null;
// a=1;
        System.out.println(p.getName());
        System.out.println(p.getAge());
// System.out.println(a);
	}
}



package com.itcast.demo3;
import com.itcast.demo3.*;
public class Demo {
	public static void main(String[] as){
        People p;
         int a;
        p = new People();
// t1= null;
// a=1;
        System.out.println(p.getName());
        System.out.println(p.getAge());
// System.out.println(a);
	}
}



<イグ


クラス内の変数は初期化する必要がない
メソッド内のローカル変数は初期化する必要があります

Peopleクラスのnameやageフィールドのようなメンバ変数に手動で初期値を与えなかった場合、Javaは変数の型に対応した初期値を与えます。 stringは参照型で、nameはnull、ageは0と出力します。このとき、nullでも0でも変数の初期値は同じになります。

ローカル変数、例えばオブジェクトpとプラスチックaをmainメソッドで宣言する場合、ただ宣言しただけではエラーになります。これはローカル変数を使う前に手動で初期化し代入しなければならず、Javaはデフォルト値を与えないことを意味します。

ここでは、コード内のPオブジェクトなどの参照型変数に注意を払う必要があります、割り当てなしの宣言とNULLを与えることは同じではありませんが、NULLの代入はまた、割り当ての初期化の完了と同等です、この時間は、メソッドを呼び出すことができますが、確かにヌルポインタ例外が報告されます。あらかじめ宣言しておいて、後でコードが代入を行うだけなら、宣言時にnullを与える必要はない。

要するに、ローカルオブジェクトは使う前に絶対に割り当てるべきですが、いつ割り当てるかは重要ではありません。

ですから、メンバ変数もローカル変数も値を代入せず、宣言だけしておくことは確かに可能です。

=nullと代入しない場合のメモリの違いは、これを見ればわかります。 https://bbs.csdn.net/topics/380085577?list=lz