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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 lwj123 于 2015-3-26 22:28 编辑

主题:final与类变量初始化问题【活动已结束】
奖励技术分数:1-4分
答题链接:技术答题之“final关键字【答题贴】http://bbs.itheima.com/thread-177845-1-1.html
  1. ---------------------------------------------程序1------------------------------------------------
  2. public class PriceTest {
  3.     public static void main(String[] args) {
  4.         //输出位置1   
  5.         System.out.println(Price.INSTANCE.currentPrice);
  6.         Price p = new Price(2.8);
  7.         //输出位置2
  8.         System.out.println(p.currentPrice);
  9.     }
  10. }
  11. class Price {
  12.     public Price(double discount) {
  13.         currentPrice = initPrie - discount;
  14.     }
  15.    
  16.     static final Price INSTANCE = new Price(2.8);
  17.    
  18.     static double initPrie = 20;

  19.     double currentPrice;
  20. }
  21. 问题一:请问程序1两个位置的输出一样吗?为什么?
  22. -------------------------------------------华丽分割线-----------------------------------
  23. ----------------------------------------------程序2--------------------------------
  24. public class PriceTest {
  25.         public static void main(String[] args) {
  26.                 //输出位置1        
  27.                 System.out.println(Price.INSTANCE.currentPrice);
  28.                 Price p = new Price(2.8);
  29.                 //输出位置2
  30.                 System.out.println(p.currentPrice);
  31.         }
  32. }
  33. class Price {
  34.         public Price(double discount) {
  35.                 currentPrice = initPrie - discount;
  36.         }
  37.         
  38.         static final Price INSTANCE = new Price(2.8);
  39.         
  40.         static final double initPrie = 20;

  41.         double currentPrice;
  42. }
  43. 问题二:请问程序2两个位置的输出一样吗?为什么?
复制代码



41 个回复

正序浏览
还没学到,干着急啊,我要回去好好看看
回复 使用道具 举报
DxxD 中级黑马 2015-3-28 22:53:28
38#
来晚了。。。。
回复 使用道具 举报
顶一下~
回复 使用道具 举报
新手过来看看
回复 使用道具 举报
已经结束了哇!怎么总是生不逢时:'(
回复 使用道具 举报
第一题不一样,第二题一样。。。
回复 使用道具 举报
先看看!
回复 使用道具 举报
看题。。。
回复 使用道具 举报
看题目当中,一样吧
回复 使用道具 举报
顶下,领题!!!!
回复 使用道具 举报
看题看题!
回复 使用道具 举报
好难,不会。。。
回复 使用道具 举报
表示不领题,上次答了for循环,一点分分都没有,
回复 使用道具 举报
Grady 中级黑马 2015-3-26 23:43:35
26#
第一个程序:得-2.8,因为执行的时候,initPrie还是0,输出位置2的时候initPrie被显式初始化为20所以输出是17.2。
第二个程序:因为是常量
回复 使用道具 举报
很好  收下
回复 使用道具 举报
Grady 中级黑马 2015-3-26 21:40:05
24#
俺也来看看
回复 使用道具 举报
static final修饰的基本类型成员变量会优先于static final  修饰的引用类型加载
static 修饰的基本类型成员变量,和引用类型同时加载
好纠结。。。。为什么会这样:dizzy:

回复 使用道具 举报
帮评下。。。

黑马.pdf

91.81 KB, 阅读权限: 100, 下载次数: 0

点评

请在指定在区域答题。  发表于 2015-3-26 22:37
回复 使用道具 举报
第二题static final double initPrie = 20;优先与static final Price INSTANCE = new Price(2.8);执行
那么问题来了
static final 和static 修饰的成员到底是怎样的执行规律呢

点评

请在指定的区域作答!  发表于 2015-3-27 19:26
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马