java三目
1. 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()方法不能聲明為靜態。
2. Java 三目運算符 表達式內為什麼不能進行強制轉換
java三目運算符的形式如下:
條件語句?表達式1:表達式2
當條件語句判斷是真(true)時,就執行表達式1,否者就執行表達式2注意 表達式1和表達式2 ,是獨立的,不要用1個強制轉換, 來轉換2個表達式
每個表達式都要獨立的強制轉換.
如果想要強制轉換2個表達式, 那麼需要在結果前進行轉換
按照你的意圖.進行修改如下
條件是: n1>9
表達式1是:(char)(n1-10+'A')
表達式2是:(char)n1
所以,拼接在一起就是
n1>9?(char)(n1-10+'A'):(char)n1
修改後的輸出語句如下
System.out.println("低四位:"+(n1>9?(char)(n1-10+'A'):(char)n1));//結果輸出了E
上面的做法就比較繁瑣,因為我們要的是轉換結果,而不是轉換每一個表達式,
所以可以做下面的優化
(char)(n1>9?(n1-10+'A'):n1)
修改後的輸出語句如下
System.out.println("低四位:"+(char)(n1>9?(n1-10+'A'):n1));
3. 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
4. Java三目運算符
這個問題主要考察的應該不是三目運算符,而是java運算的自動轉換。
i為int類型
x為char類型
第一行計算x和0,此時0可以被看作是char類型,所以x並沒有被轉換,而是直接輸出B
第二行計算x和1111111110,而1111111110是無法保存為char類型的,只能當作int,所以此時x需要被強轉成int之後再進行運算,char類型的x在強轉成int之後就變成了他的asc碼。也就是66。
第三行,計算x和i,i是int類型,所以與第二行同理,x被自動轉換成int,結果為66。
如果問題解決,請採納本答案
5. java三目運算符嵌套怎麼用
紅色框框 部分是 解釋 三目運算 嵌套
下面是 代碼
public static void showThreeAlgorithm(){ //三目運算符
/*三目運算相當於
if(i>j){
100;
} else{
200;
}*/
int i = 46;
int j = 97;
int z = i>j?i:j;
int y = i<j?i:j;
System.out.println("i>j?i:j的 值 : "+z);
System.out.println("i<j?i:j的 值 : "+y);
//用三元運算求出判斷兩個值是否相等,不相等 輸出較大的值
int s = i==j?0:i>j?i:j;
// i等於j 則s = 0
// 否則判斷 i 是否大於 j 大於 則 s = i 小於 則 s = j
System.out.println("輸出S的值: "+s);
}
6. java三目運算符
三目運算符a
>
b
?
a
:
b運算規則是:如果?前面的等式為true,即a>b,則執行返回a,否則返回b;
先判斷變數year是否大於對象a的year值,如果大於就返回1,小於就繼續判斷year是否小於對象a的year值,如果小於就返回-1;此後就是year==a.year的情況,依次判斷月份和日
7. java中三目運算符
先學java的叫它,三元運算符;先學c的叫它三目運算符
即( ?: )
如名字表示的三元運算符需要三個操作數。
語法為:條件表達式?表達式1:表達式2。
說明:問號前面的位置是判斷的條件,判斷結果為bool型,為true時調用表達式1,為false時調用表達式2。
其邏輯為:「如果為真執行第一個,否則執行第二個。」
8. 在Java 里什麼時候使用三目運算比較好
在需要進行判斷的時候使用三目運算比較好,可以替換if--else
三目運算符,又稱條件運算符。條件表達式b ? x : y,先計算條件b,然後進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。
例如:
//判斷一個數的正負
publicStringjudge(inta){
/*if(a>0){
return"a是正數";
}else{
return"a是負數";
}*/
//三目運算符
Stringc=a>0?"a是正數":"a是負數";
returnc;
}
此例子裡面三目運算符與if--else效果是一樣的。
9. 在JAVA中,什麼是單目/雙目/三目運算符
所謂單目運算符就是只有需要一個操作數的運算符,如:--、++同理,雙目運算符就是需要兩個操作數的運算符,如:+、-、*、/、=
等。三目運算符只有一個
?
:
。(需要三個操作數)
10. java 三目運算符
其實這主要是JAVA重載和基本數據類型自動轉型造成的。
JAVA重載:這里主要調用了println(char x) 和println(int x) 兩個方法。
基本數據類型自動轉型原則中有一條:有多種類型混合運算時,系統將所有類型轉換為大的,然後再進行計算。
自動轉型順序:
byte->short(char)->int->long->float->double.
還有0~65535可以認為是int也可以是char。
System.out.println(true?x:0);此處0被認為是char,所以輸出b,倘若把0改為65536,則輸出66.
同理
System.out.println(true?x:1111111110);此處1111111110已經大於了65535,所以x被自動轉型為int再輸出,輸出66.
System.out.println(false?i:x);也是同理,將x轉換為int,輸出 66.
其實我講得也不是非常詳細,有興趣可以仔細看下重載和基本數據類型轉型的章節,希望能幫到你。