The local variable sum may not have been initialized的深刻理解

曾经终败给现在 2022-03-08 15:30 227阅读 0赞

在这里插入图片描述
今天做了到编程题,才深刻领会到这个概念
于是深入了解一下

  1. package com.itcast.demo3;
  2. public class People {
  3. private String name;
  4. private int age;
  5. String getName() {
  6. return name;
  7. }
  8. int getAge() {
  9. return age;
  10. }
  11. }
  12. package com.itcast.demo3;
  13. import com.itcast.demo3.*;
  14. public class Demo {
  15. public static void main(String[] as){
  16. People p;
  17. int a;
  18. p = new People();
  19. // t1= null;
  20. // a=1;
  21. System.out.println(p.getName());
  22. System.out.println(p.getAge());
  23. // System.out.println(a);
  24. }
  25. }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
类中的变量不用初始化
方法中的局部变量必须初始化

如果是成员变量,比如People类的name或者age字段,不手动赋初始值的时候Java会给个默认值,和变量的类型对应,string是引用类型,打印出来name是null,age是0。这个时候变量初始值给不给null或者0是一样的。

如果是局部变量,比如在主方法中,声明一个对象p和一个整形a,如果只声明的话,使用时会报错,也就是局部变量在使用之前必须要手动初始化赋值,Java不会给默认值,当然也可以不在声明的时候赋值,可以在后边使用之前赋值就行。

这里可能要注意引用类型变量,比如代码中的p对象,声明时不赋值和给个null是不一样的,赋值null也相当于完成了初始化赋值,这个时候可以调用方法,但必然会报空指针异常。如果只想提前声明一下,后边代码会进行赋值的话,那声明的时候就不必要给个null了。

总之,一个局部对象使用之前肯定要先赋值,但不管你在什么时候赋值。

所以,无论是成员变量还是局部变量,声明的时候不赋值只声明当然是可以的。

=null和不赋值在内存上的区别可以看看这个:https://bbs.csdn.net/topics/380085577?list=lz

发表评论

表情:
评论列表 (有 0 条评论,227人围观)

还没有评论,来说两句吧...

相关阅读