private static final 应该怎么用,怎么去理解? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anonymoustian
V2EX    Java

private static final 应该怎么用,怎么去理解?

  •  
  •   anonymoustian 2016-03-01 16:19:50 +08:00 4539 次点击
    这是一个创建于 3581 天前的主题,其中的信息可能已经有所发展或是发生改变。

    static 和 final 怎么理解?
    private 修饰 static 怎么理解?
    能不能给以通俗一点的解释和例子? 谢谢

    7 条回复    2016-03-01 21:04:20 +08:00
    BOYPT
        1
    BOYPT  
       2016-03-01 16:40:38 +08:00   1
    static 是指这个成员在内存中的位置固定,不管初始化多少个实例对象,这个成员都共同使用一处内存;
    final 是指不能在继承的类里面改变这个成员;
    private 修饰 static 就是说这个静态成员是 private 的只能在内部方法访问。
    zerowxxyf
        2
    zerowxxyf  
       2016-03-01 16:42:34 +08:00
    private 是访问权限限定, static 表示不要实例化就可以使用, final 表示不可变的。合在一起大概就是私有全局常量的意思。
    anonymoustian
        3
    anonymoustian  
    OP
       2016-03-01 16:59:48 +08:00
    @BOYPT 那 private static 是不是只能类里的静态方法访问
    BOYPT
        4
    BOYPT  
       2016-03-01 17:04:34 +08:00
    @anonymoustian 静态方法和静态成员不一样概念。
    静态成员是所有实例共享使用;
    静态方法是指即使没有实例化一个类也可以运行;
    static 没有限定在哪里访问的意思。
    araraloren
        5
    araraloren  
       2016-03-01 17:13:33 +08:00   1
    限定了 static, 对于对象全局就存在一个这个对象;对于方法就不再属于任何对象了,而是属于这个类
    SoloCompany
        6
    SoloCompany  
       2016-03-01 21:01:05 +08:00   1
    private 是访问权限(可见范围)关键字,限制只能在类以及外部类( enclosing class )中才可以访问

    static 是因为 java 世界只有类(不能直接定义变量或者方法)才产生的
    所以你只要把 static 简单理解为全局变量 /全局方法就可以了,如果没有访问权限这种东西, static 的变量或者方法无论移动到什么地方效果都是完全等价的

    static 还有另一种用法,就是用来修饰内部类( inner class ),表示这个内部类不拥有外部类( enclosing class )的指针,也就是说,它完全是一个独立的类,忽略访问权限,抽取为独立的类或者移动到任意一个别的外部类里面效果都是完全等价的

    final 关键字用来修饰变量 /方法 /类的含义不完全相同,修饰变量就表示变量只能一次赋值然后禁止修改(如果是引用则只限制引用本身不可变,但引用的内容是可变的),修饰方法或类则表示禁止多态(不允许 override 一个方法 / 不允许继承一个类)

    结合以上几点可推导, private 方法必然是 final 的,因此不要画蛇添足的给 private 方法添加 final 关键字,虽然语法上允许
    SoloCompany
        7
    SoloCompany  
       2016-03-01 21:04:20 +08:00   1
    static 因为是全局的,因而也不存在多态,因此方法也不适合用 static final 来修饰,只应保留关键的 static 关键字,就已经隐含 final 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2469 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 15:12 PVG 23:12 LAX 07:12 JFK 10:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86