Java类成员初始化

Java类成员初始化与C++初始化的方式有很多不同,这部分知识相对比较基础,从而导致很多Java程序员对于Java类初始化机制不甚了了。下面就Java类成员初始化方式做一个梳理,希望对大家有益。

一、       所有变量使用前都要得到恰当的初始化

Java尽力保证:所有变量在使用前都得到恰当的初始化。

对于类成员变量,Java按照自动初始化的方式,如果是基本成员变量就赋值0,其他赋值null;

对于方法内部的局部变量,如果未赋值就直接使用的话,Java以编译时错误的形式形成错误报告,告诉你某个变量没有被初始化。

Java通过这种方式保证变量在使用前都是赋值的,这样就避免了C++中因为忘记变量初始化而产生的错误。

二、       指定初始化

Java有一种很直接的赋值方法,就是在定义类成员变量的地方为其赋值(C ++里是不能这样做的,尽管C++新手们总是想这样做)。

   public class InitValue{

      boolean bool = true;

      char ch = 'x';

      short s = 0xff;

      float f = 3.14f;

      double d = 3.1415926;

   }

甚至可以通过调用方法来提供初始值,如果方法带参数的话,参数必须是之前被初始化了的:

   public class MethodInit{

      int i = f();

      int j = g(i);

      int f(){return 11;};

      int g(intn){return n * 10;};

   }

注意参数的初始化顺序,如果将int i= f();写到int j = g(i);之后就会出现编译错误,因为初始化j时的参数还没有被初始化,编译器认为这种向前引用是不正确的。

通过指定初始化,Java类的对象都会具有相同的初始值。如果我们希望构造不同初始化值得对象,可以通过构造函数达到这一目的。

三、       构造器初始化

我们可以通过带有参数的构造函数来构造Java 对象,通过输入不同的参数使得Java对象具有不同初始值。但要明确一点:无法阻止自动初始化的进行,它将在构造器被调用之前发生。如下代码:

   public class Counter {

      int i;

      public Counter() {

         i = 10;

      }

   }

变量域i会被自动初始化为0,然后被构造器赋值为10。

在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义间,它们仍会在任何方法(包括构造器)被调用之前得到初始化。

四、       静态数据的初始化

静态数据属于类,只占用一份存储区域。静态初始化只有在必要时才会进行。当创建对象或者第一次访问静态数据时,它们才会被初始化,此后,静态对象不会再被初始化。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值