面試 看似簡單的三目運算面試題

2022-07-04 00:12:11 字數 1078 閱讀 8424

廢話不多說,直接上題:

提問:當 a=1,b=2 時,test1 方法的執行結果是什麼?思考一分鐘。

答案:

在使用三目運算子時,盡量保證兩個返回值的型別一致,不然會觸發型別轉換,轉換規則如下:

如果返回值 x 和返回值 y 是同種型別,那麼返回型別毫無疑問就是這種型別。

如果兩個返回值 x 和 y 的型別不同,那麼返回值型別為他們兩最接近的父類。舉例:

// string 和 boolean 都實現了 serializable 介面

serializable serializable = a == b ? "true" : boolean.false;

// 所有類都繼承了 object 類

object o = a == b ? new arraylist<>() : new ternaryoperatordemo();

對於基本資料型別,如果其中乙個返回值 x 型別為byteshort或者char,另乙個返回值 y 型別為int,那麼若在編譯期就能判斷出 y 的取值範圍在 x 的取值範圍之內,則返回型別為 x 的型別,反之則為 y 的型別。如果返回值 x 型別不為以上幾種,則會觸發隱藏型別轉換。

當基本資料型別和物件資料型別相遇時,三目運算子預設返回結果為基本資料型別。

了解以上規則之後,我們再看來一下 test1 方法。

private static void test1(int a, int b)
如何修改 test1 方法,使得**執行時不拋空指標異常,請至少提供一種解決方案。

一道看似簡單的面試題

使用php,給定乙個數,判斷這個數是否是二的n次方這樣看似簡單的乙個面試題,實際牽出了很多基礎知識,本章在為大家補習基礎知識的情況下來解答這道題。先亮出答案 function exponentiation number if number number 1 0 else exponentiation...

一道看似簡單的面試題

使用php,給定乙個數,判斷這個數是否是二的n次方 這樣看似簡單的乙個面試題,實際牽出了很多基礎知識,本章在為大家補習基礎知識的情況下來解答這道題。先亮出答案 function exponentiation number if number number 1 0 else exponentiatio...

簡單面試題

1.short s1 1 s1 s1 1 有錯嗎?short s1 1 s1 1 有錯嗎?答 對於short s1 1 s1 s1 1 由於1是int型別,因此s1 1運算結果也是int 型,需要強制轉換型別才能賦值給short型。而short s1 1 s1 1 可以正確編譯,因為s1 1 相當於...