Java成员变量赋值

 Java类成员变量分为普通成员变量,final成员变量和静态成员变量。

一 、对于普通成员变量的初始化,可以分为以下几种。

    1、在声明时赋值。例如 int x = 5;

    2、在代码块或者类方法中赋值。 例如:

          class Test {

                  int x; //声明时没有赋值

                  {

                           x = 6; //在代码块中赋值

                    }

                    Test() {

                          x = 7; //在构造函数中赋值

                    }

                    private void method() {

                          x = 8; //在一般方法中赋值

                     }

           }

二 、 final成员变量

          1、和普通成员变量一样,在声明时赋值。 例如  final int x = 5;

          2、和普通成员变量一样,在代码块中、构造函数中赋值。但是不能在一般成员函数中赋值。

                 如果在代码块中赋值后,不能再在构造函数中赋值。这关系到java中代码执行顺序。

            class Test {

                 final int x; //声明时没有赋值

               {

                           x = 6; //在代码块中赋值

                    }

                    Test() {

                          x = 7; //在构造函数中赋值

                    }

           }

         三种赋值方法必须选取一种,否则将会产生编译错误。

三 、 静态成员变量

         1、普通静态成员变量。 和普通成员变量类似,可以在声明时赋值,可以在静态代码块中赋值,也可以在静态方法中赋值,也可以在构造函数中赋值。

          2、final静态成员变量。赋值只能在声明时和静态代码块中。构造函数中不能对静态final变量赋值。


请看一个完整的例子。

            public class Parent {
                    final static int x = 0;
                    final static int y;
                    final int z;
                    static {
                            System.out.println("Static code");
                             y = 5;
                            //z = 6; //Cannot make a static reference to the non-static field z
                     }
                     final int a;
                     {
                                 System.out.println("Dynamic code");
                                 a = 3;
                                 b = 4;
                                 //System.out.println("b = " + b); //Cannot reference a field before it is defined
                     }
                     final int b;
                     //final static int c; //The blank final field c may not have been initialized
                     Parent() {
                               z = 6;
                               //c = 6; //The final field Parent.c cannot be assigned
                               System.out.println("Constructor code");
                               System.out.println("x = "+ x);
                               System.out.println("y = "+ y);
                               System.out.println("z = "+ z);
                               System.out.println("a = "+ a);
                               System.out.println("b = "+ b);
                      }
                }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值