• 有关类成员变量和局部成员变量初始值设置问题


    类成员变量:

     1 class Person{
     2     private String name;//private final String name;
     3     private int age;
     4     public String getName() {
     5         return name;
     6     }
     7     public void setName(String name) {
     8         this.name = name;
     9     }
    10     public int getAge() {
    11         return age;
    12     }
    13     public void setAge(int age) {
    14         this.age = age;
    15     }
    16     @Override
    17     public String toString() {
    18         return "Person [name=" + name + ", age=" + age + "]";
    19     }
    20 }
    21 
    22 public class Test {
    23     public static void main(String[] args) {
    24         Person person = new Person();
    25         System.out.println(person.toString());
    26     }
    27 }

    运行成功,输出结果:Person [name=null, age=0]

    若修改为private final String name;则会编译不通过,提示需要为其初始化。解决方法:1.声明时赋值;2.在构造方法中赋值;3.在构造代码块中赋值。(只能选择其中一种方法)

    说明:final修饰的成员变量没有默认初始值,而普通类成员变量和static修饰的成员变量有默认的初始值,String类型的默认初始值为null,int类型的默认初始值为0。

    局部成员变量:

    1 public class Test {
    2     public static void main(String[] args) {
    3         String s ;
    4         System.out.println("s="+ s);
    5         
    6     }
    7 }

    编译失败,报错:The local variable s may not have been initialized

    说明:局部变量没有默认的初始值,要在使用之前对其进行赋值,否则编译失败。

    总结:final修饰的成员变量没有默认初始值,而普通类成员变量和static修饰的成员变量有默认的初始值;局部变量没有初始值

  • 相关阅读:
    div设置参数contenteditable=true
    Html事件总结
    PHP的isset()和empty()比较
    jQuery的ajax和遍历数组json代码
    PHP获取域名的几个函数使用
    关于网站favicon.ico
    PROCEDURE ANALYSE 通过分析select查询结果
    mysql 存在更新 不存在插入
    MySQL Migration Toolkit的使用
    高性能MySQL读书笔记:找出谁持有锁
  • 原文地址:https://www.cnblogs.com/lezhifang/p/7059742.html
Copyright © 2020-2023  润新知