黑马程序员技术交流社区

标题: 【让技术分飞】技术答题之“final关键字”【领题贴】 [打印本页]

作者: lwj123    时间: 2015-3-18 20:13
标题: 【让技术分飞】技术答题之“final关键字”【领题贴】
本帖最后由 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两个位置的输出一样吗?为什么?
复制代码




作者: 艺多不压身丶    时间: 2015-3-18 20:29
                                            捧个场,先拿题长知识

作者: 米家小九    时间: 2015-3-18 21:29
程序1不一样,程序二一样
作者: as604049322    时间: 2015-3-18 21:34
都是一样的,好吧
作者: 绝望    时间: 2015-3-18 21:48
本帖最后由 绝望 于 2015-3-18 22:04 编辑

光看题了...原来不是在这答啊
作者: 小鹏_sJQBO    时间: 2015-3-18 23:49
1不一样2一样
作者: oyy123    时间: 2015-3-19 08:54
先看题。
作者: 看丶小胖    时间: 2015-3-19 13:30
第一道不同,第二道一样
作者: shaoshuai    时间: 2015-3-19 16:53
楼主能解释下原因么?一直想不通
作者: 突然世界晴    时间: 2015-3-19 17:16
第一个不一样,第二个一样。
一个先执行fina时 还没执行到static。就已经读取0-2.8 如果把static double initPrie = 20;放在fina上就会一样
第二个fina方法和fina同时加载
作者: 菜鸟小A    时间: 2015-3-19 21:10
表示看不懂。。
作者: Julie    时间: 2015-3-20 17:22
第一个不一样,第二个一样。但是不知道为什么...
作者: tianlin    时间: 2015-3-20 22:51
哇塞  不太会
作者: 533洋洋    时间: 2015-3-26 18:20
同楼上!
作者: qq471077336    时间: 2015-3-26 19:00
等我再复习复习
作者: 张耀东    时间: 2015-3-26 19:09
先看题题
作者: xiaogougou    时间: 2015-3-26 19:14
第一题不一样,第二题一样。。。
作者: CHT    时间: 2015-3-26 20:49
还没学······
作者: 菜鸟小A    时间: 2015-3-26 21:15
一不同,二相同
作者: fankaiqiangnj    时间: 2015-3-26 21:25
第一题static double initPrie = 20;和static final Price INSTANCE = new Price(2.8);在类加载时按顺序执行的
作者: fankaiqiangnj    时间: 2015-3-26 21:26
第二题static final double initPrie = 20;优先与static final Price INSTANCE = new Price(2.8);执行
那么问题来了
static final 和static 修饰的成员到底是怎样的执行规律呢
作者: 蒋磊磊    时间: 2015-3-26 21:36
帮评下。。。

黑马.pdf

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


作者: fankaiqiangnj    时间: 2015-3-26 21:37
static final修饰的基本类型成员变量会优先于static final  修饰的引用类型加载
static 修饰的基本类型成员变量,和引用类型同时加载
好纠结。。。。为什么会这样:dizzy:


作者: Grady    时间: 2015-3-26 21:40
俺也来看看
作者: ordinary    时间: 2015-3-26 22:34
很好  收下
作者: Grady    时间: 2015-3-26 23:43
第一个程序:得-2.8,因为执行的时候,initPrie还是0,输出位置2的时候initPrie被显式初始化为20所以输出是17.2。
第二个程序:因为是常量
作者: kapp_tolo    时间: 2015-3-27 14:57
表示不领题,上次答了for循环,一点分分都没有,
作者: 胡几手    时间: 2015-3-27 16:51
好难,不会。。。
作者: 谢鸿    时间: 2015-3-27 17:52
看题看题!

作者: wwwlcy    时间: 2015-3-27 19:41
顶下,领题!!!!
作者: DK_bai    时间: 2015-3-27 21:05
看题目当中,一样吧
作者: みぎ    时间: 2015-3-27 22:25
看题。。。
作者: Pakumen    时间: 2015-3-27 23:53
先看看!
作者: 一米一光年    时间: 2015-3-28 00:02
第一题不一样,第二题一样。。。
作者: 七十九刀    时间: 2015-3-28 21:25
已经结束了哇!怎么总是生不逢时:'(
作者: 天若有晴    时间: 2015-3-28 21:33
新手过来看看
作者: @G00DMaN    时间: 2015-3-28 21:37
顶一下~
作者: DxxD    时间: 2015-3-28 22:53
来晚了。。。。
作者: 风飘逸    时间: 2015-3-28 23:15
还没学到,干着急啊,我要回去好好看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2