我刚开始学习Java。
我帮助我学习的朋友刚刚给我发了这个,并说“弄清楚这个”。
不幸的是,我无法阅读此内容。在我看来,它就像 Perl。
class _{_ _;_(){_=this;}}
这是什么意思?
_
是类名。这是一个非常令人困惑的问题,但它确实有效!
随着班级重命名:
class Something {Something something;Something(){something=this;}}
并清理:
class Something {
Something something;
Something() {
something=this;
}
}
你可能会因为这个奇怪的名字而发疯:)
class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}
事实上,甚至支持 Unicode,所以这是有效的:
class 合法類別名稱{合法類別名稱(){}}
_
是类名,下划线是一个有效的 Java 变量名,你只需要缩进你的代码来去混淆它:
class _{
_ _;
_(){
_=this;
}
}
喜欢:
class A{
A A;
A(){
A=this;
}
}
编辑:感谢@Daniel Fischer
类型名称和变量名称具有不同的命名空间。例如代码
class FOO { FOO FOO; }
在 Java 中是有效的。
概括
_
是一个类名,例如在class _{
_
是类成员名称,例如 at_ _;
和_=this
_
是构造函数名称,例如 at_()
请记住:Java 使用六个不同的命名空间:
- 包名,
- 类型名称,
- 字段(变量)名称,
- 方法名称,
- 局部变量名(包括参数),和
- 标签。
此外,每个声明的枚举都有自己的命名空间。不同类型的相同名称不冲突;例如,方法可能与局部变量命名相同。
嗯,这是一个很好的例子。Java 允许 unicode 作为标识符,因此您可以编写如下内容:
class ⲥlass {
ⲥlass claѕѕ;
}
这里类名的 c 是 'ⲥ' (U+2CA5 COPTIC SMALL LETTER SIMA) 和
对象名称的“ѕ”(U+0455 西里尔小写字母 DZE)。