Java中問號表達式(? :)和if條件語句在實現相同功能時,性能有顯著區別。
boolean condition = true; int num1 = 1; int num2 = 2; int result = 0; // 使用問號表達式 long startTime1 = System.nanoTime(); result = condition ? num1 : num2; long endTime1 = System.nanoTime(); // 使用if條件語句 long startTime2 = System.nanoTime(); if (condition) { result = num1; } else { result = num2; } long endTime2 = System.nanoTime(); System.out.println("問號表達式耗時:" + (endTime1 - startTime1) + "納秒"); System.out.println("if條件語句耗時:" + (endTime2 - startTime2) + "納秒");
在上面的代碼中,我們通過nanotime()函數分別計算了使用問號表達式和if條件語句的耗時,并輸出到控制臺中。
經測試,當數據量較小時,兩者的性能差別不大,但當數據量較大時,使用問號表達式的性能更優。因為if條件語句需要在運行時進行條件判斷,而問號表達式可以在編譯時進行優化。
總的來說,如果數據量較小或者對程序性能要求不高,可以使用if條件語句;如果數據量較大或者對程序性能要求比較高,建議使用問號表達式。