24小时热门版块排行榜    

Znn3bq.jpeg
北京石油化工学院2026年研究生招生接收调剂公告
查看: 1414  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

studyhae

木虫 (正式写手)

[交流] 【求助】final 属性 已有7人参与

定义类:
class aClass{
     public final double x;
     public final double y;

    public double getXY(){
       return x*y;
   }
}

由于属性x,y为final,必须在new类的时候初始化x,y。我的问题是,java编译器在优化的过程中,会将x*y先计算出来吗?就是说getXY()方法,是不是直接返回一个值,而没有进行乘法计算?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

王建发

铜虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+2):鼓励应助 2010-11-19 20:44:13
public class Aclass{
{
  x=10;
  y=10;
}
public final double x;
public final double y;
public double getXY(){
  return x*y;
}
}
可以这样初始化在new的时候就执行了
我发贴,我成长
3楼2010-11-18 23:03:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

王建发

铜虫 (小有名气)

调试一下不就知道了吗
我发贴,我成长
2楼2010-11-18 22:54:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

linyujack

铜虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢参与应助! 2010-12-14 09:54:26
应该不会在new的时候直接计算出来的,除非Java编译器的优化规则中,规定了这种情况,碰到final变量的情况,可以直接把getxy()的return替换为数值,但这种规则要实现起来似乎非常的麻烦。
卓越不仅仅是单一的举动,而是一种习惯。
4楼2010-12-13 23:26:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Thornfighter

木虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
微尘、梦想(金币+2): 谢谢回复…… 2011-04-06 15:18:21
class aClass{
     public final double x;
     public final double y;

    public double getXY(){
       return x*y;
   }
}

由于属性x,y为final,必须在new类的时候初始化x,y。我的问题是,java编译器在优化的过程中,会将x*y先计算出来吗?就是说getXY()方法,是不是直接返回一个值,而没有进行乘法计算?
一、类成员变量用final修饰需要在声明的时候就赋值,否则将不能通过编译直接报错。可以这样理解,因为在创建对象的时候,如果没有使用构造方法或静态初始化器为成员变量赋值,那么成员变量将被赋默认值(对int类型来说是0),而又由于有final修饰,所以一旦赋值后就不能修改,那这种成员变量将失去使用价值。
二、x*y不会先计算出来,这个你可以在getXY()方法中嵌入一个变量调试一下就知道了!
class aClass{
     public final double x=10;//使用final修饰成员变量的时候必须赋值
     public final double y=100;
     double test;

    public double getXY(){
        test=x*y;//嵌入test
        return x*y;
   }

    public double getTest() {
        return test;
    }
}

public class Test1 {
    public static void main(String[] args) {
        aClass a=new aClass();
        System.out.println("before getXY() run,test="+a.getTest());
        a.getXY();
        System.out.println("after getXY() run, test="+a.getTest());
    }
}
迷茫
5楼2011-04-05 18:18:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 285求调剂 +10 AZMK 2026-04-05 15/750 2026-04-07 15:11 by shdgaomin
[考研] 372分材料与化工(085600)英二数二求调剂 +4 蓝笺片 2026-04-06 4/200 2026-04-07 12:30 by dongzh2009
[考研] 求调剂到材料 +5 程9915 2026-04-06 5/250 2026-04-06 15:21 by yulian1987
[考研] 求调剂 +5 chenxrlkx 2026-04-05 7/350 2026-04-06 07:54 by houyaoxu
[考研] 材料专硕322分 +10 哈哈哈吼吼吼哈 2026-04-04 10/500 2026-04-05 21:22 by 学员8dgXkO
[考研] 材料专硕(0856) 339分求调剂 +10 哈哈哈鹅哈哈哈 2026-04-04 10/500 2026-04-05 18:51 by 蓝云思雨
[考研] 282求调剂 +3 aaa车辆 2026-04-01 3/150 2026-04-05 17:03 by yulian1987
[考研] 调剂 +3 好好读书。 2026-04-02 3/150 2026-04-05 13:02 by arrow8852
[考研] 266分,一志愿电气工程,本科材料,求材料专业调剂 +11 哇呼哼呼哼 2026-04-01 12/600 2026-04-04 23:17 by 永字号
[考研] 278求调剂 +14 范婷娜 2026-04-04 15/750 2026-04-04 22:15 by lqwchd
[考研] 325求调剂 +4 春风不借意 2026-04-04 4/200 2026-04-04 22:08 by 啵啵啵0119
[考研] 一志愿上海大学生物学346 +3 上海大学346调剂 2026-04-03 3/150 2026-04-04 20:20 by dongzh2009
[考研] 333求调剂 +9 阿科逸 2026-03-31 9/450 2026-04-04 18:25 by macy2011
[考研] 306求调剂 +3 hyb上名工 2026-04-02 3/150 2026-04-04 18:12 by 热情沙漠
[考研] 一志愿0817化学工程与技术,求调剂 +24 我不是只因 2026-04-02 28/1400 2026-04-04 15:15 by dongzh2009
[考研] 315分 085602 求调剂 +15 26考研上岸版26 2026-04-02 15/750 2026-04-03 12:45 by xingguangj
[考研] 319求调剂 +18 太容易1018 2026-04-01 18/900 2026-04-03 11:18 by linyelide
[考研] 312 化工或制药调剂 +8 小小墨123 2026-04-02 9/450 2026-04-03 09:12 by zhouxiaoyu
[考研] 260求调剂 +6 朱芷琳 2026-04-02 6/300 2026-04-02 20:27 by 6781022
[考研] 0710生物学求调剂 +9 manman511 2026-04-01 9/450 2026-04-02 10:00 by zxl830724
信息提示
请填处理意见