User user;和User user = null;这两种写法有什么区别呢?
认证高级PHP讲师
これは User user; がどこに表示されるかによって異なります。結論を先に言いましょう: User user;出现在哪里,先放结论:
User user;
如果是对象的属性(field),则两种写法没有区别。
如果是方法中的局部变量,若方法中没有其他地方对user赋值,则编译错误。
如果是对象的属性,那么在编译的时候,java编译器会自动为field赋初值(原始类型为默认值;引用类型为null)。例如下面的代码:
public class TestInitialization { private User userA; }
编译后,使用javap查看字节码,红色部分为编译器自动赋初值的过程:
如果是方法中的局部变量,编译器不会自动赋初值。User user;只是定义的变量user,但并未给user在内存中分配空间,没有初始化,无法通过编译;User user = null;
User user = null;
user がローカル変数の場合: 最初の代入 (null への初期化を含む) の前に user を使用すると、コンパイル エラーになります
配属後は変化なし
同じみたいですね
違いはありません、デフォルトの初期化値は null です
いいえ = スタックに彼のスペースがありません。 =null を追加すると、スタック内の空のプレースホルダーが指定されます
これは
User user;
がどこに表示されるかによって異なります。結論を先に言いましょう:User user;
出现在哪里,先放结论:如果是对象的属性(field),则两种写法没有区别。
如果是方法中的局部变量,若方法中没有其他地方对user赋值,则编译错误。
如果是对象的属性,那么在编译的时候,java编译器会自动为field赋初值(原始类型为默认值;引用类型为null)。例如下面的代码:
编译后,使用javap查看字节码,红色部分为编译器自动赋初值的过程:
如果是方法中的局部变量,编译器不会自动赋初值。
User user;
只是定义的变量user,但并未给user在内存中分配空间,没有初始化,无法通过编译;User user = null;
🎜 🎜それがメソッド内のローカル変数である場合、コンパイラーは自動的に初期値を割り当てません。
User user;
は定義された変数 user にすぎませんが、ユーザーにメモリ領域を割り当てず、初期化されず、User user = null;
を渡すこともできません。変数 user を定義し、メモリ空間も user に割り当てられるため、user は null を指すようになります。 🎜 リーリーuser がローカル変数の場合: 最初の代入 (null への初期化を含む) の前に user を使用すると、コンパイル エラーになります
配属後は変化なし
同じみたいですね
違いはありません、デフォルトの初期化値は null です
いいえ = スタックに彼のスペースがありません。 =null を追加すると、スタック内の空のプレースホルダーが指定されます