当前位置:首页 > java > 正文

java未初始化变量怎么办

  • java
  • 2024-09-28 19:29:29
  • 6082
本文目录一览

I、java可能尚未初始化变量

你的hue变量确实没有初始化啊,你只是在条件中给变量赋值了,但是程序不一定能走到if或者elseif语句中去啊,假如直接走到else中去,你returnhue不是什么都没有吗?
所以booleanhue=false;你先给它赋上值吧。

II、Java程序可能尚未初始化变量

Rationalr1;只是声明有r1这个Rational对象的存在,但是并没有给r1分配地址。 所以r1现在是实际不存在的一个对象。
Rationalr1=newRational();new表示给r1分配地址,这时候r1才真正指向某个值。

III、java属性常量没有默认值那属性加载时是怎么分配空间的,java不是给属性开辟空间时会先给默认值吗?

关于分配空间这个你百度一下JVM内存结构;就可以了解详细机了;


首先你截图的变量是成员变量(定义在类中,方法体之外。 变量在创建对象时实例化。 成员变量可类中的方法、构造方法以及特定类的语句块访问)。 而且是实例变量不是静态变量,实例变量不分基本类型和引用类型都是在在对象创建的时候分配内存空间,存储在堆中;

类变量的初始化分为两个阶段。 第一次是在类加载的准备阶段。 准备阶段会正式为类变量分配内存并设置类变量的初始值。 如果类变量是基本数据类型,初始值为其对应初值,如果为对象类型,初始值为null。 如果类变量同时final关键字修饰,那么准备阶段就会直接将变量赋值。

成员变量属于对象独有,每个对象创建时只会调用一次构造函数。 成员变量可在定义时初始化,也可以在所有构造函数中初始化。 你的a虽然定义时没初始化,但你在所有构造方法中初始化了。

当类中有静态成员变量,普通成员变量,静态初始化块,非静态初始化块,部变量和构造函数初始化动作时:①首先执行静态成员变量的初始化,②其次是普通成员变量的初始化,③然后当静态初始化块中的变量类名访问或创建该类对象时时执行静态初始化块,创建该类对象也会执行非静态初始化块,④最后执行构造函数当中的初始化动作,⑤最后当类中的函数调用时执行部变量的初始化动作。

IV、Java代码中的可能未初始化变量问题

变量遵循:先赋值,后使用!
表面上你的price和totalprice都可以取得到值,但是,如果前面的几条if判断语句均为成功的话,说明price还是没有赋值的!这样就导致错误!!
理由相当于:
intprice;
inttotalprice=price*10;
而此时price并没有原始初值!所以出错!
你判断时,最好使用ifelse,这样能保证到price能取到初值!
但是最好还是在定义时给它赋予初值,养成好的程习惯!!!