2024-04-20 09:00:01

Java的隐藏特性

在阅读了c#的隐藏特性之后,我想知道Java的隐藏特性有哪些?


当前回答

Java 6以来的类路径通配符。

java -classpath ./lib/* so.Main

而不是

java -classpath ./lib/log4j.jar:./lib/commons-codec.jar:./lib/commons-httpclient.jar:./lib/commons-collections.jar:./lib/myApp.jar so.Main

参见http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html

其他回答

列表。subblist返回原始列表的视图

一个有文献记载但鲜为人知的列表特征。这允许您使用反映在原始列表中的更改来处理列表的部分。

列出子列表(int fromIndex, int toIndex)

这种方法消除了显式范围操作的需要(通常存在于数组的那种操作)。任何需要一个列表的操作都可以通过传递一个subblist视图而不是整个列表来用作范围操作。例如,下面的习惯用法从列表中移除一系列元素: 列表。分表(,).clear (); 类似的习惯用法可以用于indexOf和lastIndexOf, Collections类中的所有算法都可以应用于子列表。”

一个接口可以扩展多个接口,但一个类只能扩展一个类,这让我感到惊讶。

c风格的printf():)

System.out.printf("%d %f %.4f", 3,Math.E,Math.E);

输出: 3 2.718282 2.7183

二分搜索(以及它的返回值)

int[] q = new int[] { 1,3,4,5};
int position = Arrays.binarySearch(q, 2);

类似于c#,如果在数组中没有找到'2',它会返回一个负值,但如果你对返回值取1的补,你实际上会得到'2'可以插入的位置。

在上面的例子中,position = -2, ~position = 1,这是2应该插入的位置…它还允许您找到数组中“最接近”的匹配项。

我认为它很漂亮……:)

标识符可以包含外文字符,比如变音:

而不是写:

String title="";

有人可以这样写:

String Überschrift="";

我可以添加扫描仪对象。它是解析的最佳选择。

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();