为了账号安全,请及时绑定邮箱和手机立即绑定

#在Java中定义

#在Java中定义

LEATH 2019-11-30 13:28:44
我开始用Java编程,并且想知道是否#define存在与C ++等效的语言。谷歌快速搜索说没有,但是有人可以告诉我Java是否存在类似的东西吗?我正在尝试使代码更具可读性。而不是myArray[0]我希望能够写myArray[PROTEINS]例如。
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

不,因为没有预编译器。但是,根据您的情况,您可以实现以下相同的目的:


class MyClass

{

    private static final int PROTEINS = 0;


    ...


    MyArray[] foo = new MyArray[PROTEINS];


}

编译器会注意到PROTEINS永远不会改变,因此会内联它,这或多或少是您想要的。


请注意,在不断的访问修饰符是不重要的在这里,所以它可能是public或protected不是的私人,如果你想重复使用多个类相同的常数。


查看完整回答
反对 回复 2019-11-30
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

static final int PROTEINS = 1

...

myArray[PROTEINS]

您通常会在类本身中添加“常量”。并请注意,允许编译器优化对它的引用,因此除非您重新编译所有使用类,否则请勿对其进行更改。


class Foo {

  public static final int SIZE = 5;


  public static int[] arr = new int[SIZE];

}

class Bar {

  int last = arr[Foo.SIZE - 1]; 

}

编辑循环... SIZE=4。也进行编译,Bar因为您的编译器在上一个编译周期中可能刚刚写了“ 4”!


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 448 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信