前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java8 中有趣酷炫的小技巧

Java8 中有趣酷炫的小技巧

作者头像
jeanron100
发布2020-12-15 10:32:33
5260
发布2020-12-15 10:32:33
举报

执行注释

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

代码语言:javascript
复制
public class Main {

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

程序输出:

代码语言:javascript
复制
wmyskxz is awesome!

说明

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


双括号初始化集合

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

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

代码语言:javascript
复制
Set<String> set = new HashSet<String>() {{
    add("wmyskxz");
    add("is");
    add("awesome");
    add("!");
} };
System.out.println(set);

程序输出:

代码语言:javascript
复制
[awesome, !, wmyskxz, is]

“在 Java 11 中,你可以使用 Set.of("wmyskxz", "is", "awesome", "!") 代替,这里仅仅讨论 Java 8 另外对于 ArrayList 集合类型还是有简单初始化方法的:Arrays.asList()


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

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

代码语言:javascript
复制
int[] arr = new int[] { 1, 3, 4, 5, 6 };

// 2 has to be inserted
int pos = Arrays.binarySearch(arr, 2);
System.out.print("Element has to be inserted at: "
    + ~pos);

程序输出:

代码语言:javascript
复制
Element has to be inserted at: 1

说明

Arrays.binarySearch() 是 JDK 自己实现的二分查找方法,局限就是目标数组必须是排序好的 (可以使用 Arrays.sort() 进行排序)


判断数字是偶数还是奇数

通常我们会使用 num % 2 == 0 (一定记住要使用 偶判断 而不是奇判断,原因是负数会出错..) 来判断数字是奇数还是偶数。下面的技巧尽管并不比上述方法好多少,但在考虑大数时,效率会高很多:

代码语言:javascript
复制
System.out.println((num & 1) == 0 ?  "EVEN" : "ODD" );

示例:

代码语言:javascript
复制
int num = 2;
System.out.println((num & 1) == 0 ? "EVEN" : "ODD");
// 输出 EVEN

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

快速乘或除 2

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

代码语言:javascript
复制
n = n << 1;   // Multiply n with 2 
n = n >> 1;   // Divide n by 2 

判断素数

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

代码语言:javascript
复制
BigInteger.valueOf(1235).isProbablePrime(1) 

More..

欢迎补充

参考资料

  1. Interesting and Cool Tricks in Java - https://www.geeksforgeeks.org/interesting-and-cool-tricks-in-java/?ref=leftbar-rightbar
  2. Java tricks for competitive programming (for Java 8) - https://www.geeksforgeeks.org/java-tricks-competitive-programming-java-8/?ref=rp
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 执行注释
    • 说明
    • 双括号初始化集合
    • 获取数组插入数字元素的下标
      • 说明
      • 判断数字是偶数还是奇数
      • 快速乘或除 2
      • 判断素数
      • More..
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档