首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

在一个种里面创建一个自身对象,不会无限循环吗

2013-02-24 
在一个类里面创建一个自身对象,不会无限循环吗?class Price{static final Price Pnew Price(2.7)static

在一个类里面创建一个自身对象,不会无限循环吗?
class Price{
static final Price P=new Price(2.7);
static double initPrice=20;
double currentPrice;
public Price(double discout){
currentPrice=initPrice-discout;
}
}
public class PriceTest {
public static void main(String[] args) {
System.out.println(Price.P.currentPrice); //输出-2.7

}

}

 例如这样,这样一来,P实例不是无限循环创建了吗?虽然我知道肯定不会无限循环,但是原理在哪里?虽然这样的写法很怪异,但是有助于理解java在底层的工作。

[解决办法]
首先要弄清java对象的初始化过程。先是static变量,然后是static块,然后是普通变量,然后是构造器。
static final Price P=new Price(2.7)的时候,initPrice还没有被赋值20,所以默认为0。至于死循环的问题,是LZ多想了。
[解决办法]
static变量是属于类的,不属于哪一个特定的对像。 只初始化一次。

去掉static修饰,就能看见死循环了。

热点排行