下划线在这段Java代码中实际做了什么?

下划线在这段Java代码中实际做了什么?,java,syntax,Java,Syntax,我刚开始学习Java 我的朋友正在帮我学习,他刚刚给我发了这个,说“把这个弄明白” 不幸的是,我无法阅读这篇文章。我觉得它像Perl class _{_ _;_(){_=this;}} 什么意思?\u是类名。这是一个非常令人困惑的问题,但它是有效的 重命名该类后: class Something {Something something;Something(){something=this;}} 并清理: class Something { Something something;

我刚开始学习Java

我的朋友正在帮我学习,他刚刚给我发了这个,说“把这个弄明白”

不幸的是,我无法阅读这篇文章。我觉得它像Perl

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

什么意思?

\u
是类名。这是一个非常令人困惑的问题,但它是有效的

重命名该类后:

class Something {Something something;Something(){something=this;}}
并清理:

class Something {
    Something something;
    Something() {
        something=this;
    }
}
你可能会对这种奇怪的命名发疯
:)

事实上,甚至支持Unicode,因此这是有效的:

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

\u
是类名,下划线是有效的Java变量名,您只需缩进代码即可取消使用:

class _{
    _ _;
    _(){
     _=this;
   }
}
比如:

class A{
    A A;
    A(){
     A=this;
   }
}
编辑:感谢@Daniel Fischer

类型名称和变量名称具有不同的名称空间。例如,代码
类FOO{FOO FOO;}
在Java中是有效的

摘要

  • 是一个类名,例如在
    class{
  • 是一个类成员名称,例如在
    =此
  • \u
    是一个构造函数名称,例如at
    \u()
记住:Java使用

  • 包名称
  • 键入名称
  • 字段(变量)名称
  • 方法名称
  • 局部变量名称(包括参数),以及
  • 标签
此外,每个声明的枚举都有自己的名称空间。不同类型的相同名称不会冲突;例如,方法的名称可能与局部变量的名称相同


这是一个很好的例子。Java允许unicode作为标识符,因此您可以编写如下内容:

class ⲥlass {
ⲥlass claѕѕ;
}
这里的类名是c'ⲥ' (U+2CA5科普特小写字母SIMA)和


对象名为“ѕ”(U+0455西里尔小写字母DZE)。

没有错。它编译得和我键入的一样好。我只是到现在才理解它。@GrijeshChauhan类型名和变量名有不同的名称空间。
类FOO{FOO FOO;}
有效。例如,在Haskell中,类型和值也有不同的名称空间。区别在于大小写有意义,类型名称必须以大写字母开头,因此不能像类型一样命名任何旧值,只能命名构造函数,但
data Foo=Foo | Bar Int
有效。当然,它只能在y您可以从标识符出现的位置找出它的类别。@另一个普通人阅读我的更新答案,我添加了一个链接also@GrijeshChauhan我明白了。谢谢:)这个问题正在讨论中。让我们拿赞成或反对在那里关闭/删除它的论点作为例子。@另一个普通人,如果你的朋友是编程老师,你可能应该抛弃他我认为告诉你弄明白这一点是学习这门语言的好方法。记住不敬的琐事一点用处都没有。更不用说当你开始学习一门语言时。@EnnoShioji很有意思。“无关”。对不起。有人试图创建“IOJCC”?(谷歌“IOCCC”)@EnnoShioji这“无关的琐事”是怎么回事这需要记住吗?任何自称Java程序员的人都应该能够很容易地理解这一点。你不能有一个名为
class
的变量,它是一个关键字。@nickb:它不是Java关键字
'class'
。正如我提到的,对象名
'claѕѕ
'ss'
这是非ascii字符。所以实际上,对象的名称是
claѕѕ
cla\u0455\u0455'
,我认为这消除了误解。:)我个人喜欢@Alvin的编辑:)在你的
疯狂吧
示例中几乎没有错误。(1)你忘记在
\uuuuuuuuuuuuuuuuu=\ uuuuuuuuuuucode>之后添加分号(两次),(2)如果您试图重载
.
方法,那么您还需要传递类型,因此
.(\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
。等一下。我刚刚调试了下划线吗?是时候刹车了。@Pshemo-Lol,我从来没有认真对待这个代码:P fixedGet a+1作为对我答案的评论。想不出其他奖励你的方式。
class ⲥlass {
ⲥlass claѕѕ;
}