Java有趣的小功能_Java8 中有趣酷炫的小技巧

执行注释

大多数开发人员认为注释永远不会在程序中执行,并用于帮助代码理解。但是,它们却可以被执行:

public class Main { public static void main(String[] args) { // System.out.println("wmyskxz is awesome!"); }}

程序输出:

wmyskxz is awesome!

Java 允许使用 Unicode 字符而不进行编码。这里的 Unicode 字符 被 Java 编译器解析为新行,因此可以理解为该 Unicode 字符后面出现的语句会在下一行被执行。

双括号初始化集合

在 Java 中,Set/ List/ Map等集合对象没有在生命期间初始化值的简单方法 。开发人员要么将值显式地传送到集合内,要么为常量集合创建一个静态块。

使用双括号初始化,可以在声明过程中以更少的精力和时间初始化集合。例如:

Set set = new HashSet() {{ add("wmyskxz"); add("is"); add("awesome"); add("!");} };System.out.println(set);

程序输出:

[awesome, !, wmyskxz, is]

在Java 11中,你可以使用Set.of("wmyskxz", "is", "awesome", "!")代替,这里仅仅讨论Java 8

另外对于ArrayList集合类型还是有简单初始化方法的:Arrays.asList()

获取数组插入数字元素的下标

有一个很酷的技巧,可以找到可以在数组中插入所请求元素的位置:

int[] arr = new int[] { 1, 3, 4, 5, 6 };// 2 has to be insertedint pos = Arrays.binarySearch(arr, 2);System.out.print("Element has to be inserted at: " + ~pos);

程序输出:

Element has to be inserted at: 1

Arrays.binarySearch()是 JDK 自己实现的二分查找方法,局限就是目标数组必须是排序好的 。

判断数字是偶数还是奇数

通常我们会使用num % 2 == 0来判断数字是奇数还是偶数。下面的技巧尽管并不比上述方法好多少,但在考虑大数时,效率会高很多:

System.out.println((num & 1) == 0 ? "EVEN" : "ODD" );

示例:

int num = 2;System.out.println((num & 1) == 0 ? "EVEN" : "ODD");// 输出 EVENnum = -1;System.out.println((num & 1) == 0 ? "EVEN" : "ODD");// 输出 ODD快速乘或除 2

二进制中,乘以2表示将所有位向左移动,除以2表示向右移动。

n = n 1; // Divide n by 2判断素数

Java 在BigInteger类中内置了isProbablePrime()方法。如果此 BigInteger 可能是质数(可以肯定),则返回true,如果它肯定是复合的,则返回false。

BigInteger.valueOf(1235).isProbablePrime(1)More..

欢迎补充

参考资料

Interesting and Cool Tricks in Java

Java tricks for competitive programming (for Java 8)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值