24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1407  |  回复: 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的回帖

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的回帖
查看全部 9 个回答

王建发

铜虫 (小有名气)

调试一下不就知道了吗
我发贴,我成长
2楼2010-11-18 22:54:57
已阅   回复此楼   关注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的回帖

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的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 292求调剂 +4 lilllllxccc 2026-04-05 5/250 2026-04-07 09:29 by 纺大杨老师
[硕博家园] 0856材料化工求调剂,一志愿211,初试成绩349 +4 江淮北月 2026-04-05 4/200 2026-04-06 22:44 by chenzhimin
[考研] 327求调剂 +3 Xxjc1107. 2026-04-06 3/150 2026-04-06 22:34 by qlm5820
[考研] 调剂 +3 mcbbc 2026-04-06 4/200 2026-04-06 20:58 by lbsjt
[考研] 307求调剂 +3 所念及所望 2026-04-06 3/150 2026-04-06 17:30 by 土木硕士招生
[考研] 305求调剂 +3 77Qi 2026-04-06 3/150 2026-04-06 15:36 by going home
[考研] 化学357分,考研调剂 +11 .Starry. 2026-04-04 12/600 2026-04-06 06:28 by houyaoxu
[考研] 材料调剂 +14 壹贰贰亿 2026-04-04 14/700 2026-04-05 23:31 by 来看流星雨10
[考研] 323分(计算机视觉和大模型项目)能直接上手 +3 chaoxiicy 2026-04-01 3/150 2026-04-05 00:50 by chongya
[考研] 323求调剂 +8 李佳乐1 2026-04-04 8/400 2026-04-04 22:26 by hemengdong
[考研] 11408 一志愿西电,277分求调剂 +4 zhouzhen654 2026-04-03 4/200 2026-04-04 18:10 by 猪会飞
[考研] 一志愿中国石油大学化学工程323分求调剂 +4 化工专硕323分 2026-04-03 6/300 2026-04-03 22:12 by dongzh2009
[考研] 338求调剂 +4 zzz,,r 2026-04-03 4/200 2026-04-03 16:39 by lijunpoly
[考研] 求调剂 +3 usbdndj 2026-04-03 3/150 2026-04-03 14:10 by dxiaoxin
[考研] 330求调剂 +3 白神呜呼呼 2026-04-02 3/150 2026-04-03 10:15 by 蓝云思雨
[考研] 一志愿深大085601材料工程专业(专硕)300分可以调剂去哪 +8 10160315 2026-04-02 8/400 2026-04-03 09:36 by hypershenger
[考研] 一志愿华南师范大学-22408计算机-292分-求华南师范大学调剂 +4 爱读书的小鳄鱼 2026-04-02 4/200 2026-04-02 18:35 by 求调剂zz
[考研] 0710生物学求调剂 +9 manman511 2026-04-01 9/450 2026-04-02 10:00 by zxl830724
[考研] 【求调剂】新能源材料本科,一志愿211,初试321 +6 求调剂学校, 2026-04-02 6/300 2026-04-02 09:41 by 晴空210210
[考研] 286求调剂 +5 Sa67890. 2026-04-01 7/350 2026-04-01 19:50 by 6781022
信息提示
请填处理意见