V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
li24361
V2EX  ›  Java

java 中某些变量以 _或$开头,是什么原因?

  •  
  •   li24361 · 2016-11-16 14:11:35 +08:00 · 4228 次点击
    这是一个创建于 2964 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我就记得_是从 c++内部变量传过来的,$是老的 jdk 写法吧,现在没找到比较官方的资料

    21 条回复    2016-11-23 22:55:15 +08:00
    acoder2013
        1
    acoder2013  
       2016-11-16 14:46:07 +08:00
    母鸡
    Zzzzzzzzz
        2
    Zzzzzzzzz  
       2016-11-16 14:53:05 +08:00
    说明是从 class"反编译"出来的呗
    knightdf
        3
    knightdf  
       2016-11-16 14:53:11 +08:00
    反编译的把?
    fo2w
        4
    fo2w  
       2016-11-16 14:54:01 +08:00
    没什么特别原因, 就是个习惯
    或者称之为, "一群人之间的约定俗成"
    li24361
        5
    li24361  
    OP
       2016-11-16 14:55:16 +08:00
    @Zzzzzzzzz
    @knightdf
    我看项目里面有人故意这么写的,估计是模仿 jdk 源码
    jason19659
        6
    jason19659  
       2016-11-16 15:39:20 +08:00
    没见到过
    fantastM
        7
    fantastM  
       2016-11-16 16:46:54 +08:00
    java 中私有内部方法可以以"_"这特殊符号开头标志一下。$倒是不知道了。。
    fyibmsd
        8
    fyibmsd  
       2016-11-16 17:12:13 +08:00
    php 的人写的
    8bit
        9
    8bit  
       2016-11-16 17:13:48 +08:00
    你指的内部类? JConsoleContext$ConnectionState.class ?
    Ouyangan
        10
    Ouyangan  
       2016-11-16 17:36:48 +08:00
    可能是那人脑子抽
    sudoz
        11
    sudoz  
       2016-11-16 17:39:32 +08:00
    @li24361 JDK 源码是这么写的?难道不是反编译过来的结果?
    a0000
        12
    a0000  
       2016-11-16 17:44:54 +08:00 via Android
    变量名可以取_和$,个人习惯问题
    我看着变量名是$的,只有一个字符,特别不舒服
    KeepPro
        13
    KeepPro  
       2016-11-16 18:05:07 +08:00 via Android
    楼上正解 内部类编译过得就是$.class
    zartouch
        14
    zartouch  
       2016-11-17 00:55:40 +08:00 via iPhone
    _估计是约定的代码风格而已, 公司里之前的 coding style 文档就是属于类的变量名字前缀加_。 属于方法变量名字后缀加_。 现在估计是 IDE 自动高亮了已经属于可有可无的做法了
    Balthild
        15
    Balthild  
       2016-11-17 09:22:05 +08:00 via Android
    php+java=phava
    YzSama
        16
    YzSama  
       2016-11-17 10:23:40 +08:00
    编码规范吗?
    YzSama
        17
    YzSama  
       2016-11-17 10:24:03 +08:00
    @Balthild py+java=pyjava XD...
    ilovesusu
        18
    ilovesusu  
       2016-11-17 10:39:18 +08:00
    Balthild
        19
    Balthild  
       2016-11-17 11:50:05 +08:00 via Android
    @YzSama 不应该是 jy 通红(划掉)jython 吗
    xingda920813
        20
    xingda920813  
       2016-11-17 13:24:27 +08:00
    觉得 Google 的命名方式很好:
    private int mResId;
    private static int sResId;
    private static final int RES_ID;
    void method() {
    int resId = 0;
    }
    这样什么类型的变量一眼就可以看出来.
    kaneg
        21
    kaneg  
       2016-11-23 22:55:15 +08:00
    $是 Java 可以在变量中使用的合法字符,一般用于编译器生成的内部类和匿名类的命名,不建议普通开发人员使用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:31 · PVG 22:31 · LAX 06:31 · JFK 09:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.