java的三目運算符
A. java中三目運算符
先學java的叫它,三元運算符;先學c的叫它三目運算符
即( ?: )
如名字表示的三元運算符需要三個操作數。
語法為:條件表達式?表達式1:表達式2。
說明:問號前面的位置是判斷的條件,判斷結果為bool型,為true時調用表達式1,為false時調用表達式2。
其邏輯為:「如果為真執行第一個,否則執行第二個。」
B. java 四個點是什麼特殊運算符
Java雙冒號(::)
該運算符在Java 8中被用作方法引用(method reference),方法引用是與lambda表達式相關的一個重要特性。它提供了一種不執行方法的方法。為此,方法引用需要由兼容的函數介面組成的目標類型上下文。
大致意思是,使用lambda表達式會創建匿名方法, 但有時候需要使用一個lambda表達式只調用一個已經存在的方法(不做其它), 所以這才有了方法引用!
以下是Java 8中方法引用的一些語法:
靜態方法引用(static method)語法:classname::methodname 例如:Person::getAge
對象的實例方法引用語法:instancename::methodname 例如:System.out::println
對象的超類方法引用語法: super::methodname
類構造器引用語法: classname::new 例如:ArrayList::new
數組構造器引用語法: typename[]::new 例如: String[]:new
C. java三目運算符
1、三目運算符 (表達式1)?(表達式2):(表達式3),計算方法是這樣的:表達式1是一個邏輯表達式游中,如果其值為true,則整個表達式的值為表達粗搭式2的值,否則為表達式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);結果為i = 8.因為5 > 3為true,所以i = 5 + 3.
3、根據三目運算符的岩磨拿從右到左的結合性,我是這樣劃分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以應該從最右邊的那個表達式開始計算,結果應該是1、0、-1中的一個值。
以上純屬個人理解。沒搞清楚你這個演算法到底是什麼意義。。。。還有你的compare()方法不能聲明為靜態。
D. 在JAVA中,什麼是單目/雙目/三目運算符
所謂單目運算符就是只有需要一個操作數的運算符,如:--、++同理,雙目運算符就是需要兩個操作數的運算符,如:+、-、*、/、=
等。三目運算符只有一個
?
:
。(需要三個操作數)
E. java三目運算符
編寫代碼就是一句一句的賦值語句,三目運算最終得到的是卜悔棚一個結果,要把賦給一個變數才行。你這種寫前帶法也是行不通,你這代碼表現出來的意圖是在三目運算中輸出,你應該改為將String字元串作為三目運算的結果,最後再輸出,一型則句話,編譯器沒那麼牛,還解釋不了你現在這樣的代碼。
String result = i%4==0?(i%100==0?(i%400==0?
"This year is a leap year":
"This year is not a leap year"):
"This year is a leap year"):
"This year is not a leap year";
System.out.println(result);
F. java怎麼用三目運算符,輸入任意比較三個數大小,輸出中間數
int comp(int a, int b, int c)
{
return a >= b ? (a >= c ? (b >= c ? b : c) : a) : (a >= c ? a : (b >= c ? c : b));
}
G. JAVA的運算符的優先順序是什麼樣的
所有的數學運算都認為是從左向右運算的,Java語言中大部分運算符也是從左向右結合的,只有單目運算符、賦值運算符和三目運算符例外,其中,單目運算符、賦值運算符和三目運算符是從右向左結合的,也就是從右向左運算。另外,Java 語言中運算符的優先順序共分為 14 級,其中 1 級最高,14 級最低。在同一個表達式中運算符優先順序高的先執行。如下是優先順序和結合性。
結合性是指如果遇到同一優先順序的運算符,程序的執行順序。比如!和++同時存在,它會先加,然後再去比較是否相等。