900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java代码下划线是啥意思_关于语法:在这个Java代码中 下划线实际上做了什么?...

java代码下划线是啥意思_关于语法:在这个Java代码中 下划线实际上做了什么?...

时间:2019-04-06 10:12:54

相关推荐

java代码下划线是啥意思_关于语法:在这个Java代码中 下划线实际上做了什么?...

我刚开始学JAVA。

帮我学习的朋友刚刚给我发了这个,说"想办法"。

不幸的是,我看不懂这个。我觉得它像Perl。

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

这是什么意思?

这个问题正在meta上讨论。让我们在这里为关闭/删除它或反对关闭/删除它采取论据。

@另外,如果你的朋友认为让你弄明白这是学习这种语言的一个好方法,你就应该放弃他/她作为编程老师的身份。记住不敬的琐事一点用处都没有。更不用说当你开始学习一门语言了。

@恩诺肖吉很重要。"不相关"。对不起的。

是否有人试图创建"IOJCC"?(谷歌"ioccc")

@恩诺肖吉,这个"不相关的琐事"需要记住吗?任何人称自己为Java程序员的人都应该能够很容易地理解这一点。

PHANT0M:这里的"琐事"是Java允许单个下划线作为标识符的事实,我认为这不是有用的知识。

_是类名。这是一个非常令人困惑的问题,但它起作用了!

将类重命名为:

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

清理干净:

class Something {

Something something;

Something() {

something=this;

}

}

你可以用这个奇怪的名字来疯狂。

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

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

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

我个人喜欢@alvin的编辑:)

您的get crazy示例中几乎没有错误。(1)你忘了在____=__后面加分号(两次);(2)如果你试图重载_方法,那么你还需要传递类型,所以_(___)应该是_(_ ___)。下面是它的外观。等一下。我刚调试了下划线吗?该刹车了。

@噢,我从来没有认真对待过那条代码:P修正

对我的答案进行评论时,获得+1。想不出另一种奖励你的方法。

EDCOX1×0是类名称,下划线是一个有效的Java变量名,您只需缩进代码就可以对其进行模糊处理:

class _{

_ _;

_(){

_=this;

}

}

像:

class A{

A A;

A(){

A=this;

}

}

编辑:感谢@daniel fischer

Type names and variable names have different namespaces. and for example code class FOO { FOO FOO; } is valid in Java.

总结

_是一个类名,例如在class _{上。

_是一个类成员名称,例如在_ _;和_=this处。

_是一个构造函数名,例如在_()处。

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

Package names,

type names,

field (variable) names,

method names,

local variable names (including parameters), and

labels.

In addition, each declared enum has its own namespace. Identical names of different types do not conflict; for example, a method may be named the same as a local variable.

没有错。它编译得和我键入的一样好。直到现在我才明白。

@grijeshchauhan类型名和变量名具有不同的命名空间。class FOO { FOO FOO; }工程。

"丹尼尔费舍尔谢谢……这只是爪哇语吗?"有其他语言能做到吗?

例如,在haskell中,类型和值也有不同的名称空间。不同的是,该大小写具有含义,类型名称必须以大写字母开头,因此不能像类型那样命名任何旧值,而只能命名构造函数,但data Foo = Foo | Bar Int起作用。当然,它只能在语言中工作,在语言中,您可以从标识符出现的地方找到它的类别。

@丹尼尔菲舍尔非常感谢丹尼尔菲舍尔…我觉得很有趣。

@另一个普通的阅读我更新的答案,我也添加了一个链接

@我看到了。谢谢:)

我有一个交叉问题:在C++中也有承包商和类名,函数名重载和重写是相同的。它对命名空间还是C++编译器的内部表示不同名称的每个函数?很抱歉再次打扰你。

呃,C++不是我的领域。但是,除非我上次查看之后发生了变化,否则重载是通过名称管理来解决的,参数类型以某种方式包含在"实名"中。我认为C++中的类型名称和函数/构造函数名称在同一个命名空间中,但我不确定,而且懒得现在去查找它。

字段名和局部变量不是在同一个命名空间中吗?否则,您将无法隐藏变量,就像setter方法中常见的那样:void setValue(String value) { this.value = value;}。

@不,我的意思是"是"和"是"都在同一个名称空间中。

@另一个普通的嗨,你读过这个问题,它的答案模糊了的C代码竞赛。

@Grijeshchauhan:在您的评论中,您写到它们在同一个名称空间中,但这与您的回答(列出6个不同的名称空间)相矛盾。我会说"字段vs局部变量vs枚举成员"都只是作用域。

@马阿蒂努斯是的,我注意到了。但我认为,因为我们使用this,所以两个名称空间相同。我不明白你说的'this is just scoping'是什么意思。请添加一些我自己感到困惑的信息/链接。

好吧,这是个很好的例子。Java允许Unicode作为标识符,这样就可以编写类似的内容:

class ?lass {

?lass cla??;

}

这里的类名c是'?'(U+2ca5哥普特文小写字母Sima)和

对象名的'?'(U+0455西里尔文小写字母Dze)。

不能有名为class的变量,它是关键字。

NICB:它不是Java关键字EDCOX1,12。正如我所提到的,对象名'cla??'有'ss',它是非ASCII字符。所以实际上,对象的名字是cla??是cla\u0455\u0455',我认为这可以消除误解。:)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。