當前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]執(zhí)行注釋 大多數(shù)開發(fā)人員認為 注釋 永遠不會在程序中執(zhí)行,并用于幫助代碼理解。但是,它們卻 可以被執(zhí)行: public?class?Main?{ ????public?static?void?main(String[]?args)?{ ????????//?\u000d?System.out.println("wmyskxz?is?awesome!"); ????} } 程序

執(zhí)行注釋

大多數(shù)開發(fā)人員認為 注釋 永遠不會在程序中執(zhí)行,并用于幫助代碼理解。但是,它們卻 可以被執(zhí)行

public class Main {

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

程序輸出:

wmyskxz is awesome!

說明

Java 允許使用 Unicode 字符而不進行編碼。這里的 Unicode 字符 \u000d 被 Java 編譯器解析為新行,因此可以理解為該 Unicode 字符后面出現(xiàn)的語句會在下一行被執(zhí)行。


雙括號初始化集合

在 Java 中,Set/ List/ Map 等集合對象沒有在生命期間初始化值的簡單方法 (Java 11 支持了該類操作)。開發(fā)人員要么將值顯式地傳送到集合內(nèi),要么為常量集合創(chuàng)建一個靜態(tài)塊。

使用雙括號初始化,可以在聲明過程中以更少的精力和時間初始化集合。例如:

Set<String> set = new HashSet<String>() {{
    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()


獲取數(shù)組插入數(shù)字元素的下標

有一個很酷的技巧,可以找到可以在數(shù)組中插入所請求元素的位置:

int[] arr = new int[] { 13456 };

// 2 has to be inserted
int 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 自己實現(xiàn)的二分查找方法,局限就是目標數(shù)組必須是排序好的 (可以使用 Arrays.sort() 進行排序)。


判斷數(shù)字是偶數(shù)還是奇數(shù)

通常我們會使用 num % 2 == 0 (一定記住要使用 偶判斷 而不是奇判斷,原因是負數(shù)會出錯..) 來判斷數(shù)字是奇數(shù)還是偶數(shù)。下面的技巧盡管并不比上述方法好多少,但在考慮大數(shù)時,效率會高很多:

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

示例:

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 表示向右移動。

n = n << 1;   // Multiply n with 2 
n = n >> 1;   // Divide n by 2 

判斷素數(shù)

Java 在 BigInteger 類中內(nèi)置了 isProbablePrime() 方法。如果此 BigInteger 可能是質(zhì)數(shù)(可以肯定),則返回 true,如果它肯定是復(fù)合的,則返回 false。

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

特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

Java8 中有趣酷炫的小技巧

長按訂閱更多精彩▼

Java8 中有趣酷炫的小技巧

如有收獲,點個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉