A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2013-5-5 19:19  /  2174 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

因为你的程序中当执行System.out.println(Price.INSTANCE.currentPrice);时程序会先跳到初始化INSTANCE的那一句,然后再利用构造方法初始化话变量,此时构造方法中initPrice的值还是0.0,所以会输出-2.8 ,如果你把initPrice的赋值语句放在INSTANCE赋值语句的前面,则答案就是17.2,
代码如下
  1. class Price{
  2.         static double initPrice = 20;//首先初始化initPrice的值
  3.          final static Price INSTANCE = new Price(2.8);
  4.          double currentPrice;
  5.          public Price(double discount){
  6.                  currentPrice = initPrice-discount;
  7.          }
  8. }
  9. class PriceTest{
  10.          public static void main(String arg[]){
  11.                  System.out.println(Price.INSTANCE.currentPrice);
  12.                  Price p = new Price(2.8);
  13.                  System.out.println(p.currentPrice);
  14.          }
  15. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马