2015-05-26 1 views
-5

Я изо всех сил пытаюсь понять, как константу можно определить без использования литерала. Есть final int A = 1 + 1 count?Как определить константу без использования литерала?

+2

Что вы подразумеваете под "константой"? – Radiodef

+0

Примеры вашего вопроса в java пожалуйста. – KevinDTimm

+1

'(3 + 2)' тоже константа, но не буквальная; также он не оценивается во время выполнения. – fabian

ответ

4

Спецификация языка Java определяет Constant Expressions. Первый пункт - «Литералы примитивного типа и литералы типа String», поэтому эти литералы также являются константами. Аналогичным образом в нем перечислены «Простые имена (§6.5.6.1), которые относятся к постоянным переменным». Однако существует много других форм выражения, которые составлены с использованием только определенных операторов, которые также определены как постоянные выражения. См. Связанный раздел для полных правил.

1

Константа представляет собой значение, которое не изменяется:

int getRandomNumber() { 
    //chosen by a fair dice roll, guaranteed to be random 
    return 4; //<- literal 
} 

public final int random = getRandomNumber(); //<- constant 

XKCD 221

Здесь random не буквальным, так как он является результатом вызова метода. Это, однако, постоянное, поскольку оно объявлено final.

Java имеет ограниченное число литералов:

String a = "a"; // string literal 
int three = 3; // number literal 
int[] manyThree = {3,3,3}; //an array literal consisting of number literals 

Но любой переменной может быть константой, объявив ее final.

1

Ну, вы можете легко иметь нелитеральную константу. Отнесите:

public class A { 
    public static final int A_CONSTANT = new java.util.Random().nextInt(); 
} 

A.A_CONSTANT, безусловно, является постоянным - это final и static, поэтому после загрузки, что класс, он не меняется! Тем не менее, это не буквальный - он постоянный во время выполнения, а не во время компиляции. Каждый раз, когда A загружен, A_CONSTANT имеет новое, постоянной значения, в то время как буквальный 4 всегда точно 4.

0

Литерал не является константой она постоянна. (без a) Константа - это имя для значения, которое может быть представлено литералом. (Или другой константой)

 Смежные вопросы

  • Нет связанных вопросов^_^