假设我有类似
的东西int x = 2 + 3;
x
是否被视为文字?
答案 0 :(得分:16)
x
是一个符号。 2 + 3
是一个表达。 2
和3
是文字。
答案 1 :(得分:9)
不,它是编译时常量表达式中的两个文字。根据编译方式的不同,您可能无法区分生成的二进制文件。
答案 2 :(得分:8)
答案 3 :(得分:1)
要了解如何命名所有这些语法元素,您可以浏览i.g.
http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html
http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html
答案 4 :(得分:1)
你可能在现实世界中看到的其他类型的文字(程序员也不能打扰他自己计算它,让编译器完成确定文字的繁重工作):
const unsigned int NEGATIVE_TESTER_FOR_32_BIT = 1<< 31;
const char ALPHABET_PIVOT ='A'+(('Z' - 'A')/ 2);
[编辑:视编辑而定] 是的,这取决于编译器。但是我猜大多数编译器编写者都做了他们的功课,如果他们可以生成必要的汇编或虚拟机语言指令,那么在编译时计算东西只是为他们在公园散步。实际上,即使是字符文字'H',也不会以逐字'H'的形式存储在文件中,它会被存储为数字文字(72,或者在十六进制视图中存储为0x48或48h) )在最终机器代码中。我可以冒险猜测所有编译器都会将两个文字缩小为文字,而不是表达式。这是他们在公园散步(编译器编写者)