Java类名中有哪些字符有效?还有哪些其他规则管理Java类名称(例如,Java类名称不能以数字开头)?
如何最好地检查字符串输入是否是用于编码的有效java变量?我敢肯定,我不是第一个愿意这样做的人.但也许我错过了正确的关键字来找到有用的东西.
最好的可能是RegEx,它检查:
以一封信开头
然后可以包含数字,字母
可以包含一些特殊字符,比如'_'(哪个?)
我读到了Java变量的命名.它说除了$和_之外,Java变量不能以任何数字和特殊字符开头.
一些有效的例子:
int count;
int _count;
int $count;
Run Code Online (Sandbox Code Playgroud)
还有一些无效的例子:
int %count;
int 4count;
int #count;
Run Code Online (Sandbox Code Playgroud)
相同的规则是否适用于方法名称?
标识符由Java语言规范,Java SE 7 Edition(§3.8)很好地定义
Run Code Online (Sandbox Code Playgroud)An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.
据我所知,由于方法名称是标识符,因此不可能在java中命名以数字开头的方法,并javac遵守此规则.
那么,为什么Java虚拟机似乎不遵守这个规则,允许我们在Bytecode中命名一个以数字开头的函数?
这个简单的代码片段实际上会打印f99()方法名称及其参数的值.
public class Test {
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.f99(100));
}
public int f99(int i){
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
编译和执行:
$ javac Test.java
$ java Test
Run Code Online (Sandbox Code Playgroud)
输出:
f99
100
Run Code Online (Sandbox Code Playgroud)
可以在编译后反汇编代码,并f99通过99(在reJ之类的工具的帮助下 )重命名所有出现的代码.
$ java …Run Code Online (Sandbox Code Playgroud) 我知道$可以在Java中用作方法名.还有什么?
class MyClass {
String $() {
return "I've never been expected anyone would invoke me";
}
}
Run Code Online (Sandbox Code Playgroud)
这实际上是一个实际问题.我正在寻找另一个$.
这是我在大学参加的 Java 测试中的一个问题
\n\n一、公共保护
\n\n二. $_
\n\n三._identi#ficador
\n\n我有。受保护
\n\n我想说我、II、我都是正确的。这个问题的正确答案是什么?
\n\n西班牙语问题的来源:Teniendo la siguiente lista de identificadores de Variables, \xc2\xbfCu\xc3\xa1l (es) es (son) v\xc3\xa1lido (s)?
\n我有一些疑问,我想知道那是intπ; 是Java或Not中的有效语法,因为Java支持UNICODE所以根据我的说法它可以是有效的,但我想确定