黑马程序员技术交流社区
标题:
【让技术分飞】技术答题之“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------------------------------------------------
public class PriceTest {
public static void main(String[] args) {
//输出位置1
System.out.println(Price.INSTANCE.currentPrice);
Price p = new Price(2.8);
//输出位置2
System.out.println(p.currentPrice);
}
}
class Price {
public Price(double discount) {
currentPrice = initPrie - discount;
}
static final Price INSTANCE = new Price(2.8);
static double initPrie = 20;
double currentPrice;
}
问题一:请问程序1两个位置的输出一样吗?为什么?
-------------------------------------------华丽分割线-----------------------------------
----------------------------------------------程序2--------------------------------
public class PriceTest {
public static void main(String[] args) {
//输出位置1
System.out.println(Price.INSTANCE.currentPrice);
Price p = new Price(2.8);
//输出位置2
System.out.println(p.currentPrice);
}
}
class Price {
public Price(double discount) {
currentPrice = initPrie - discount;
}
static final Price INSTANCE = new Price(2.8);
static final double initPrie = 20;
double currentPrice;
}
问题二:请问程序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
2015-3-26 21:35 上传
点击文件名下载附件
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