在阅读了c#的隐藏特性之后,我想知道Java的隐藏特性有哪些?
当前回答
列表。subblist返回原始列表的视图
一个有文献记载但鲜为人知的列表特征。这允许您使用反映在原始列表中的更改来处理列表的部分。
列出子列表(int fromIndex, int toIndex)
这种方法消除了显式范围操作的需要(通常存在于数组的那种操作)。任何需要一个列表的操作都可以通过传递一个subblist视图而不是整个列表来用作范围操作。例如,下面的习惯用法从列表中移除一系列元素: 列表。分表(,).clear (); 类似的习惯用法可以用于indexOf和lastIndexOf, Collections类中的所有算法都可以应用于子列表。”
其他回答
这并不是一个真正的隐藏功能,但当我看到这个编译好的时候,它确实给了我一个很大的惊喜:
public int aMethod(){
http://www.google.com
return 1;
}
它被编译的原因是编译器将http://www.google.com行“http:”部分视为标签,而该行的其余部分是注释。
所以,如果你想写一些奇怪的代码(或模糊的代码),只要在那里放很多http地址。: -)
我知道Java 6包括脚本支持,但我最近才发现jrunscript, 它可以交互式地解释和运行JavaScript(以及其他脚本语言,如Groovy),有点像Ruby中的Python shell或irb
JDK 1.6_07+包含一个名为VisualVM (bin/jvisualvm.exe)的应用程序,它是许多工具之上的一个漂亮的GUI。它似乎比JConsole更全面。
如果不使用默认初始化式,Java处理在变量定义上做了一个巧妙的技巧。
{ int x; if(whatever) x=1; if(x == 1) ... }
这将在编译时给您一个错误,即您有一个X未正确定义的路径。这帮助了我几次,我已经开始考虑默认的初始化,像这样:
int x=0; String s=null;
这是一个不好的模式,因为它阻碍了这种有用的检查。
也就是说,有时很难解决这个问题——当它作为默认值有意义时,我不得不回去编辑=null,但我再也没有在第一次传递时把它放在里面了。
"const"是一个关键字,但你不能使用它。
int const = 1; // "not a statement"
const int i = 1; // "illegal start of expression"
我猜编译器的作者认为将来可能会用到它,他们最好保留它。
推荐文章
- 在Selenium中等待页面加载
- Maven父pom vs模块pom
- 将JSON数据转换为Java对象
- Java的隐藏特性
- 使用Java 8的可选Stream::flatMap
- 使用管道字符("|")分割字符串
- 在IntelliJ中找不到Maven插件
- Java List.add() UnsupportedOperationException
- 连接两个字节数组的简单方法
- 为什么Mockito不模拟静态方法?
- Volatile boolean vs AtomicBoolean
- 在一个类中使用相同的方法实现两个接口。覆盖了哪个接口方法?
- 线程的上下文类装入器和普通类装入器之间的区别
- 如何在Java中正确地比较两个整数?
- 在Java中获取“unixtime”