av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

java 三元操作符用法說明

瀏覽:53日期:2022-08-22 13:43:56

由?:符號表示的,具體的含義其實就和if-else結(jié)構(gòu)的含義差不多,這種運算符會將某個條件作兩種處理,如果滿足條件的話就執(zhí)行第一個結(jié)果,如果不滿足的話就執(zhí)行另外一個結(jié)果,例如:

Int A,B,C;

A=2;

B=3;

C=A>B ? 100 :200;

這條語句的意思是,如果A>B的話,就將100賦給C,否則就將200賦給C;

一、比較運算符

又叫關(guān)系運算符,用于判斷兩個被操作數(shù)的大小及是否相等的關(guān)系。使用比較運算符其返回結(jié)果一定為布爾值。

運算符

運算規(guī)則

范例

結(jié)果

==

相等于

4==3

false

!=

不等于

4!=3

true

<

小于

4<3

false

>

大于

4>3

true

<=

小于等于

4<=3

false

>=

大于等于

4>=3

true

二、邏輯運算符

用于計算兩個布爾值經(jīng)過指定邏輯后的運算結(jié)果,每個邏輯運算符都是一種邏輯運算規(guī)則。邏輯是在中學數(shù)學中學習的概念,是判斷是非關(guān)系的運算。

所以邏輯運算符操作的均為布爾值:true與false

運算符

運算規(guī)則

范例

結(jié)果

&

false&true

false

|

false|true

true

^

異或

true^flase

true

!

!true

flase

&&

短路與

false&&true

false

||

短路或

false||true

true

邏輯運算符通常連接兩個其他表達式計算后的布爾值結(jié)果

&&和&以及||和|的區(qū)別:當使用短路與或者短路或時,只要能判斷出結(jié)果則后邊的部分就不再判斷。

三、三元運算符

用來完成簡單的選擇邏輯,即根據(jù)條件判斷,從兩個選擇中選擇一種執(zhí)行。

使用格式:

(條件表達式)?表達式1:表達式2;

運算規(guī)則:

a) 判斷條件表達式,結(jié)果為一個布爾值。

b) true,運算結(jié)果為表達式1

c) false,運算結(jié)果為表達式2

如:

int a = 10; int b = 20;

a==b?10:20; 結(jié)果為20

首先看一下三元運算符的格式

[條件語句] ? [表達式1] : [表達式2]

其中如條件語句為真執(zhí)行表達式1,否則執(zhí)行表達式2.簡單的例子就不舉了,來點其它的。在JDK1.5以前的版本中,表達式1和表達式2都要求是相同的類型,比如都是String或者char之類的,在JDK1.5以后,有了自動拆箱和裝箱的原因,兩者只要其中一種或者兩者都能被拆箱即可,比如表達式1為Integer,而表達式2為int類型的,比如如下

int a = 1;Integer b = 2;boolean c = ture;int d = c ? b : a;

還有個需要注意的是,如果表達式1和表達式2的類型不相同,那么他們需要對交集類型的自動參考轉(zhuǎn)換。例如如下這段代碼

String str = 'abc';StringBuilder strbu = new StringBuilder('def');boolean boo = true;CharSequence cs = boo ? str : strbu;

因為String和StringBuilder都實現(xiàn)了CharSequence這個接口。

確定條件表達式結(jié)果類型的規(guī)則的核心是以下3點:

1 如果表達式1和表達式2操作數(shù)具有相同的類型,那么它就是條件表達式的類型。

2 如果一個表達式的類型是byte、short、char類型的,而另外一個是int類型的常量表達式,且它的值可以用類型byte、short、char三者之一表示的,那么條件表達式的類型就是三者之一

3 否則,將對操作數(shù)類型進行二進制數(shù)字提升,而條件表達式的類型就是第二個和第三個操作數(shù)被提升之后的類型

以上的三點可以用如下的代碼來幫助理解:

char ch = ’a’;int num = 0 ;boolean bool = true;System.out.print( bool ? ch : 0);//這里不是 bool ? ch : num ,那樣會打印兩個97System.out.print( !bool ? num : ch);

這段代碼打印的是 a97 。

很顯然,第二點的規(guī)則應(yīng)用到第一個打印上了,返回的是char,第三點的規(guī)則應(yīng)用到第二個打印上了,返回的是int 。但是誰會在乎這個順序?qū)е碌拇蛴〗Y(jié)果,所以為了避免不必要的麻煩,很顯然顯式強制類型轉(zhuǎn)換是個很不錯的選擇 -_-

char ch = ’a’;int num = 0 ;boolean bool = true;System.out.print( bool ? (char)ch : (char)0);System.out.print( !bool ? (int)num : (int)ch);

還有值得注意的是 表達式1 和 表達式2 不一定非得是數(shù)據(jù)類型,還可以是自己定義的方法,只要方法有返回值就行。例如

static int test1(int i) { i += 1; return i; } static int test2(int i) { i += 2; return i; } public static void ternary() { boolean boo = false; int c = boo ? test1(1) : test2(2); }

以上就是個人的一點小心得,希望大家多多支持好吧啦網(wǎng)~~有些內(nèi)容可以參考條件表達式規(guī)范[JLS 15.25]

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品第一 | 国产精品美女在线观看 | 亚洲一区网站 | 99热播精品 | 国产999精品久久久久久 | 我我色综合 | 日本一道本 | 最新国产精品视频 | 日日摸天天添天天添破 | 亚洲中国字幕 | 在线色网 | 国产精品美女久久久久aⅴ国产馆 | 午夜免费小视频 | 日韩三级电影在线看 | 国产美女精品视频免费观看 | 国产精品黄视频 | 精品无码久久久久久久动漫 | 成人免费淫片aa视频免费 | 自拍视频网站 | 精品成人av| 精品中文在线 | 男女啪啪高潮无遮挡免费动态 | 精品一区二区三区电影 | 亚洲www. | 国产精品国产精品国产专区不卡 | av天空 | 欧美寡妇偷汉性猛交 | 国产最好的av国产大片 | 日韩一区二区三区在线观看 | 国产精品视频网 | 亚洲性网 | 人人人艹| 涩涩视频在线看 | 中文字幕不卡一区 | 精品在线一区二区三区 | 亚洲免费在线 | 色爱av| 一级毛片在线视频 | 欧美激情一区二区三级高清视频 | 免费视频99 | 国产视频导航 |