这个Java代码中的下划线是什么?

我刚开始学习Java。

我帮助我学习的朋友刚刚寄给我这个消息,说'弄明白了'。

不幸的是我无法阅读这个。 Perl看起来像我。

class _{_ _;_(){_=this;}} 

这是什么意思?

_是class级名称。 这是一个非常混乱的,但它的作品!

随class改名为:

 class Something {Something something;Something(){something=this;}} 

并清理:

 class Something { Something something; Something() { something=this; } } 

而你可以发疯这个奇怪的命名:)

 class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}} 

实际上,Unicode甚至是支持的,所以这是有效的:

 class 合法類別名稱{合法類別名稱(){}} 

_是类名,下划线是一个有效的Javavariables名,你只需要缩进你的代码就可以去混淆它:

 class _{ _ _; _(){ _=this; } } 

喜欢:

 class A{ AA; A(){ A=this; } } 

编辑:感谢@Daniel Fischer

types名称和variables名称具有不同的名称空间。 并且例如代码class FOO { FOO FOO; } 在Java中是有效的。

概要

  • _是一个类名,例如在class _{
  • _是一个class级成员的名字,例如_ _;_=this
  • _是一个构造函数的名字,例如_()

请记住:Java使用六个不同的名称空间:

  • 包名称,
  • types名称,
  • 字段(可变)名称,
  • 方法名称,
  • 局部variables名称(包括参数)和
  • 标签。

另外,每个声明的枚举都有自己的命名空间。 不同types的相同名称不冲突; 例如, 一个方法可以被命名为一个局部variables

这是很好的例子。 Java允许unicode成为标识符,所以你可以写如下的东西:

 class ⲥlass { ⲥlass claѕѕ; } 

这里class级名字的c是'ⲥ'(U + 2CA5 COPY SMALL LETTER SIMA)和

对象名称为''(U + 0455 CYRILLIC小写字母DZE)。