当前位置: 首页 > 面试题库 >

为什么标识符不能以数字开头?

姜鸿畴
2023-03-14
问题内容

为什么在Java中(我不知道任何其他编程语言)标识符不能以数字开头,为什么也不允许以下声明?

int :b;
int -d;  
int e#;
int .f;
int 7g;

问题答案:

通常,您将这种限制放入其中有两个原因:

  1. 用电子方式解析很痛苦。
  2. 对人类来说这是一个痛苦的解析。

考虑以下代码片段:

int d, -d;
d = 3;
-d = 2;
d = -d;

如果-d是合法标识符,那么d末尾有哪个值?-3还是2?这是模棱两可的。

同时考虑:

int 2e10f, f;
2e10f = 20;
f = 2e10f;

最后有什么价值f?这也是模棱两可的。

另外,以任何一种方式阅读都是很痛苦的。如果有人声明2ex10,是200万个错字还是变量名?

确保标识符以字母开头意味着可以与之冲突的唯一语言项目是保留关键字。



 类似资料:
  • 问题内容: 在Java中,变量名以字母,货币字符()等开头,但不以数字、、或 一个简单的问题:那是为什么? 为什么编译器不允许有变量声明,例如 问题答案: 因为Java语言规范是这样说的: 标识符字符: JavaLetter {JavaLetterOrDigit} 所以-是的,标识符必须以字母开头;它不能以数字开头。 其背后的主要原因是: 这就是大多数人所期望的 当您限制标识符的“布局”时,它使

  • 问题内容: CSS 2.1将标识符定义为 在CSS中, 标识符 只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0及更高版本,以及连字符(-)和下划线(_);它们不能以数字,两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何ISO 10646字符作为数字代码。 因此,应该是一个无效的标识符,因此不应使用来选择元素: 在属性选择器中,属性值必须是标识符或字符串。

  • 问题内容: 我刚刚在python解释器上执行了以下程序: 现在,我已经看到了,但是正如链接所言,八进制的0在python中不再起作用(即在python3中不起作用)。但这是否意味着应该正确解释以0开头的数字的行为?是以base-2还是以正常base-10表示?既然不是这样,为什么python会那样表现呢?这是实施问题吗?还是语义问题? 问题答案: 我的猜测是,由于在python3.x中不再是八进制

  • 对于这个程序,它要求用户输入他们的全名。然后,它通过在名字和姓氏之间的空格处将它们分开来排序名字和姓氏。但是,indexOf()无法识别空格并且只返回-1。为什么?谢谢。 以下是PracticeIt的提示: 编写一个名为process Name的方法,该方法接受控制台的Scanner作为参数,并提示用户输入他或她的全名,然后以相反的顺序打印名称(即姓氏、名字)。您可以假设只会给出名字和姓氏。您应该

  • 问题内容: The Go Playground上可用的程序读取 并产生一个错误 我了解是字符串的“零值”。我不明白为什么我不能分配给我的。 问题答案: 简单的答案是, 在语言规范中未将其定义为类型的有效值。 …但是也许您想要更长的答案? 是指针,接口,通道,切片,映射和函数类型的零值,它表示 未初始化的 状态。 考虑以下变量声明: 所有这些变量都有一个代表未初始化状态的值,这很自然。已被声明为指针

  • 问题内容: 因此,我想在字符串中添加一个字符,在某些情况下,我想将该字符加倍,然后将其添加到字符串中(即先添加到字符串本身)。我尝试如下所示。 这引发了一个错误,但是我已经在字符串中添加了一个字符,所以我尝试了: 哪个有效。为什么在求和中包含字符串会导致它起作用?是否添加了一个字符串属性,该字符串属性由于存在字符串而只能在字符转换为字符串时才能使用? 问题答案: 这是因为String + Char