亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Java中運(yùn)算符及用法

 更新時(shí)間:2017年12月21日 08:51:25   投稿:laozhang  
這篇文章主要介紹了詳解Java中運(yùn)算符以及相關(guān)的用法講解,一起跟著小編學(xué)習(xí)下吧。

在前面的內(nèi)容已經(jīng)學(xué)會(huì)了如何定義變量和初始化變量。定義變量的目的就是為了操作數(shù)據(jù)。Java 語(yǔ)言中給我們提供了專門用來(lái)操作這些數(shù)據(jù)的代碼符號(hào),統(tǒng)稱為“運(yùn)算符”。

按照操作符的用法,我們可以分為以下幾類:

算術(shù)運(yùn)算符

賦值運(yùn)算符

自增和自減運(yùn)算符

邏輯運(yùn)算符

關(guān)系運(yùn)算符

位運(yùn)算符

不用擔(dān)心,它們就是些符號(hào)而已,幫我們處理操作數(shù)據(jù)的。下面用代碼實(shí)例,一一來(lái)說(shuō)明這些運(yùn)算符的用法。

1. 算術(shù)運(yùn)算符

算術(shù)運(yùn)算符,就是針對(duì)數(shù)值變量的加、減、乘、除、取余的算術(shù)操作:

加 :+
減:-
乘:*
除:/
取余:%

public class OperatorsDemo {
 public static void main(String[] args) {
 int num1 = 100;
 int num2 = 20;
 	//加
 System.out.println("num1 + num2: " + (num1 + num2) );
 //減
 	System.out.println("num1 - num2: " + (num1 - num2) );
 //乘
 	System.out.println("num1 * num2: " + (num1 * num2) );
 //除
 	System.out.println("num1 / num2: " + (num1 / num2) );
 //取余
 	System.out.println("num1 % num2: " + (num1 % num2) );
 }
}

輸出結(jié)果:

num1 + num2: 120
num1 - num2: 80
num1 * num2: 2000
num1 / num2: 5
num1 % num2: 0

2. 賦值運(yùn)算符

與大部分編程語(yǔ)言相同,Java使用'='運(yùn)算符來(lái)進(jìn)行賦值操作。這種操作會(huì)將右邊的計(jì)算結(jié)果(稱為右值)賦給左邊的變量。Java 中賦值運(yùn)算符有:

= (num2 = num1 )
+= (num2 += num1 等價(jià) num2 = num2 + num1)
-= (num2 -= num1 等價(jià) num2 = num2 - num1)
*= (num2 *= num1 等價(jià) num2 = num2 * num1)
/= (num2 /= num1 等價(jià) num2 = num2 / num1)
%= (num2 %= num1 等價(jià) num2 = num2 % num1)

public class OperatorsDemo {

 public static void main(String[] args) {
 int num1 = 10;
 int num2 = 20;

 num2 = num1;
 System.out.println("= Output: "+num2);

 num2 += num1;
 System.out.println("+= Output: "+num2);

 num2 -= num1;
 System.out.println("-= Output: "+num2);

 num2 *= num1;
 System.out.println("*= Output: "+num2);

 num2 /= num1;
 System.out.println("/= Output: "+num2);

 num2 %= num1;
 System.out.println("%= Output: "+num2);

 }
}

結(jié)果輸出:

= Output: 10
+= Output: 20
-= Output: 10
*= Output: 100
/= Output: 10
%= Output: 0

3. 自增和自減運(yùn)算符

自增和自減運(yùn)算符,只操作一個(gè)變量,是變量的值發(fā)生改變。

num++ (等價(jià) num = num + 1)自增,主要針對(duì)數(shù)值變量,使自身變量的值加1。
num—(等價(jià) num = num -1)自減,主要針對(duì)數(shù)值變量,使身變量的值減去1。

public class OperatorsDemo {

 public static void main(String[] args) {
 int num1=100;
 int num2=200;
 num1++;
 num2--;
 System.out.println("num1++ is: "+num1);
 System.out.println("num2-- is: "+num2);
 }
}

結(jié)果輸出:

num1++ is: 101
num2-- is: 199

4. 邏輯運(yùn)算符

邏輯運(yùn)算符,顧名思義用于邏輯判斷,運(yùn)算的結(jié)果為boolean 類型的值,即 true 或者 false。邏輯勻運(yùn)算符有

邏輯運(yùn)算符 邏輯關(guān)系
&&
`
!

b1 && b2:如果b1和b2都為真,b1 && b2將返回true,否則返回false

b1 || b2:如果b1和b2都是假,將返回false,否則返回true。

!b1:將返回與b1相反的值,如果b1為false,則返回true;如果b1為true,則返回false

public class OperatorsDemo {

 public static void main(String[] args) {
 boolean b1 = true;
 boolean b2 = false;

 System.out.println("b1 && b2: " + (b1&&b2));
 System.out.println("b1 || b2: " + (b1||b2));
 System.out.println("!(b1 && b2): " + !(b1&&b2));
 
 }
}

輸出結(jié)果:

b1 && b2: false
b1 || b2: true
!(b1 && b2): true

邏輯短路:

在Java中,邏輯運(yùn)算符支持短路操作,一旦能夠明確表達(dá)整個(gè)表達(dá)式的值,我們就不需要計(jì)算表達(dá)式的余下部分了。比如我們需要判斷一個(gè)對(duì)象不為空且它的某個(gè)方法返回值不為空,我們就可以這樣判斷:

if (object != null && object.someFunction() != null) {
 // do something.
}

如果object為空,第一部分表達(dá)式object != null會(huì)返回false,那么不管&&運(yùn)算符后面的表達(dá)式object.someFunction() != null的結(jié)果如何,最終的值都為false。編譯器會(huì)自動(dòng)將這部分運(yùn)算進(jìn)行優(yōu)化,不會(huì)執(zhí)行object.someFunction() != null。

5. 關(guān)系運(yùn)算符

用來(lái)比較兩個(gè)變量數(shù)據(jù)的大小,返回boolean的值,即 true 或者 false

關(guān)系操作符包括:

關(guān)系運(yùn)算符 關(guān)系
> 大于
< 小于
== 等于
!= 不等于
>= 大于等于
<= 小于等于

'=='和'!='適用于所有類型的值和對(duì)象(即基本類型變量和引用類型變量)。

'>'、'<'、'>='和'<='不適用于布爾類型的值,因?yàn)樗鼈冎挥衪rue或false,大于和小于并無(wú)實(shí)際意義。

public class OperatorsDemo {

 public static void main(String[] args) {
 int num1 = 10;
 int num2 = 50;
 if (num1==num2) {
  System.out.println("num1 and num2 are equal");
 } else{
  System.out.println("num1 and num2 are not equal");
 }

 if( num1 != num2 ){
  System.out.println("num1 and num2 are not equal");
 } else{
  System.out.println("num1 and num2 are equal");
 }

 if( num1 > num2 ){
  System.out.println("num1 is greater than num2");
 } else{
  System.out.println("num1 is not greater than num2");
 }

 if( num1 >= num2 ){
  System.out.println("num1 is greater than or equal to num2");
 } else{
  System.out.println("num1 is less than num2");
 }

 if( num1 < num2 ){
  System.out.println("num1 is less than num2");
 } else{
  System.out.println("num1 is not less than num2");
 }

 if( num1 <= num2){
  System.out.println("num1 is less than or equal to num2");
 } else{
  System.out.println("num1 is greater than num2");
 }

 }
}

輸出結(jié)果:

num1 and num2 are not equal
num1 and num2 are not equal
num1 is not greater than num2
num1 is less than num2
num1 is less than num2
num1 is less than or equal to num2

6. 位運(yùn)算符

位運(yùn)算符面向的運(yùn)算對(duì)象是二進(jìn)制的“位”,可應(yīng)用于整數(shù)類型(int),長(zhǎng)整型(long),短整型(short),字符型(char),和字節(jié)型(byte)等類型,運(yùn)算時(shí)會(huì)將其對(duì)應(yīng)Bit位(0或者是1)進(jìn)行布爾代數(shù)運(yùn)算或者移動(dòng)操作。

位運(yùn)算符 計(jì)算邏輯
& 與運(yùn)算:對(duì)于某一位,只要兩個(gè)操作數(shù)都為1,則該位的結(jié)果為1,否則為0
` `
^ 異或運(yùn)算:對(duì)于某一位,如果兩個(gè)操作數(shù)不相同,則該位的結(jié)果為1,否則為0
~ 非運(yùn)算:按位補(bǔ)運(yùn)算符翻轉(zhuǎn)操作數(shù)的每一位
&lt;&lt; 二進(jìn)制左移運(yùn)算符:左操作數(shù)按位左移右操作數(shù)指定的位數(shù)
&gt;&gt; 二進(jìn)制右移運(yùn)算符:左操作數(shù)按位右移右操作數(shù)指定的位數(shù)
&gt;&gt;&gt; 二進(jìn)制右移補(bǔ)零操作符:左操作數(shù)的值按右操作數(shù)指定的位數(shù)右移,移動(dòng)得到的空位以零填充

計(jì)算邏輯的描述讀起來(lái)有些晦澀,我們通過(guò)例子可以更清晰得了解位運(yùn)算符如何進(jìn)行計(jì)算。假設(shè)如果x等于60;y等于13;則它們的二進(jìn)制表示,以及位運(yùn)算的結(jié)果如下所示:

x = 0011 1100
y = 0000 1101
-----------------
x & y = 0000 1100
x | y = 0011 1101
x ^ y = 0011 0001
~x = 1100 0011 
x << 2 = 1111 0000
x >> 2 = 0000 1111
x >>> 2 = 0000 1111

注意&gt;&gt;和&gt;&gt;&gt;的區(qū)別:

右移位運(yùn)算符&gt;&gt;,若操作的值為正,則在高位插入0;若值為負(fù),則在高位插入1;

右移補(bǔ)零操作符&gt;&gt;&gt;,無(wú)論正負(fù),都在高位插入0。

> 位運(yùn)算不理解,先跳過(guò)。實(shí)際用到的時(shí)候,可以再去研究。

7. 運(yùn)算符的優(yōu)先級(jí)

運(yùn)算符優(yōu)先級(jí)決定一個(gè)表達(dá)式里術(shù)語(yǔ)的分組。它影響著一個(gè)表達(dá)式如何求值。一定的運(yùn)算符比其他運(yùn)算符擁有更高的優(yōu)先級(jí)。

例如:乘法運(yùn)算符比加法運(yùn)算符有更高的優(yōu)先級(jí),表達(dá)式1 + 5 * 6,根據(jù)運(yùn)算符的優(yōu)先級(jí),編譯器會(huì)先計(jì)算5 * 6,再計(jì)算30 + 1,最終得到結(jié)果31。

各類各運(yùn)算符的優(yōu)先級(jí)從大到小如下:

., (), []
單目+(右到左結(jié)合), 單目-(右到左結(jié)合), ++, --, ~, !
*, /,%
+(左到右結(jié)合), -(左到右結(jié)合)
&gt;&gt;, &lt;&lt;, &gt;&gt;&gt;
&lt;, &lt;=, &gt;, &gt;=
==, !=
&
|
^
&&
||
?:
=, +=等賦值運(yùn)算符


不用擔(dān)心這么復(fù)雜的優(yōu)先級(jí)列表,絕大多數(shù)情況下,表達(dá)式本身就很容易看得出優(yōu)先級(jí),比如賦值運(yùn)算肯定是優(yōu)先級(jí)最低的。在對(duì)優(yōu)先級(jí)不太明確的情況下,我們使用括號(hào)就能按照我們希望的方式來(lái)改變優(yōu)先級(jí),所以不需要對(duì)運(yùn)算符優(yōu)先級(jí)做太多記憶。

8.其他運(yùn)算符

三運(yùn)運(yùn)算符:

Java中的條件運(yùn)算符是一個(gè)三元運(yùn)算符,它的形式如下:

booleanExpression ? valueWhenTrue : valueWhenFalse

如果布爾表達(dá)式值為true,則表達(dá)式的值為valueWhenTrue的值,否則為valueWhenFalse的值。

比如我們要計(jì)算x的絕對(duì)值,可以通過(guò)如下代碼實(shí)現(xiàn):

if (x >= 0) {
 y = x;
} else {
 y = -x;
}

通過(guò)三元運(yùn)算符,只需要一條語(yǔ)句y = x &gt;= 0 ? x : -x;就可以完成,更為簡(jiǎn)潔。

類型轉(zhuǎn)換運(yùn)算符:

我們?cè)诤芏嗲闆r下會(huì)用到類型轉(zhuǎn)換。在適當(dāng)?shù)臅r(shí)候,Java也會(huì)根據(jù)數(shù)據(jù)類型將數(shù)據(jù)類型自動(dòng)轉(zhuǎn)為另一種。比如我們?yōu)閒loat變量賦一個(gè)整數(shù)值,編譯器會(huì)將int轉(zhuǎn)化為float賦給變量。

但是在很多情況下,Java并不能判斷我們是否需要進(jìn)行類型轉(zhuǎn)換,這時(shí)就需要類型轉(zhuǎn)化運(yùn)算符,它允許我們顯式地進(jìn)行類型轉(zhuǎn)換,如:

int a = 10;
long b = (long) a;
long c = (long) 100;

我們對(duì)變量和常量都能進(jìn)行類型轉(zhuǎn)換。

在對(duì)浮點(diǎn)數(shù)進(jìn)行類型轉(zhuǎn)換時(shí),我們需要注意截尾的問(wèn)題。如我們要將10.9進(jìn)行類型轉(zhuǎn)換:(int) 10.9,它的值并不是四舍五入的11,而是10

相關(guān)文章

  • 如何將復(fù)雜SQL轉(zhuǎn)換成Java對(duì)象的實(shí)例講解

    如何將復(fù)雜SQL轉(zhuǎn)換成Java對(duì)象的實(shí)例講解

    轉(zhuǎn)換復(fù)雜SQL到Java代碼,我們需要確定數(shù)據(jù)庫(kù)連接方式和工具,使用JDBC的API來(lái)連接數(shù)據(jù)庫(kù)、執(zhí)行SQL語(yǔ)句,復(fù)雜SQL語(yǔ)句可以被拆分為多個(gè)步驟,每個(gè)步驟執(zhí)行一個(gè)特定的操作,通過(guò)將SQL語(yǔ)句拆分為多個(gè)步驟,我們可以更好地理解復(fù)雜SQL的邏輯,并且更容易將其轉(zhuǎn)換為Java代碼
    2024-05-05
  • SpringBoot攔截器以及源碼詳析

    SpringBoot攔截器以及源碼詳析

    攔截器在我們平時(shí)的項(xiàng)目中用處有很多,如:日志記錄(我們后續(xù)章節(jié)會(huì)講到)、用戶登錄狀態(tài)攔截、安全攔截等等,所以下面這篇文章主要給大家介紹了關(guān)于SpringBoot攔截器以及源碼的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • java獲取IP和IP的歸屬地的方法實(shí)踐

    java獲取IP和IP的歸屬地的方法實(shí)踐

    在Java中獲取IP地址通常指的是獲取本地機(jī)器的IP地址或者通過(guò)某種方式獲取的遠(yuǎn)程IP地址,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-05-05
  • 詳解Java TCC分布式事務(wù)實(shí)現(xiàn)原理

    詳解Java TCC分布式事務(wù)實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解Java TCC分布式事務(wù)實(shí)現(xiàn)原理,對(duì)分布式事務(wù)感興趣的同學(xué),一定要看一下
    2021-04-04
  • Java實(shí)現(xiàn)對(duì)象復(fù)制的方法實(shí)例

    Java實(shí)現(xiàn)對(duì)象復(fù)制的方法實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)對(duì)象復(fù)制的方法實(shí)例,深復(fù)制:復(fù)制出來(lái)的對(duì)象中的變量(包括基本類型和字符串)和原來(lái)的對(duì)象的值都相同,引用對(duì)象也會(huì)指向復(fù)制出來(lái)的對(duì)象,需要的朋友可以參考下
    2023-08-08
  • java實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理系統(tǒng)代碼實(shí)例

    java實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理系統(tǒng)代碼實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 深入理解Java設(shè)計(jì)模式之備忘錄模式

    深入理解Java設(shè)計(jì)模式之備忘錄模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之備忘錄模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName

    RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName

    這篇文章主要介紹了RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java Swing JFrame框架類中setDefaultCloseOperation的參數(shù)含義與用法示例

    java Swing JFrame框架類中setDefaultCloseOperation的參數(shù)含義與用法示例

    這篇文章主要介紹了java Swing JFrame框架類中setDefaultCloseOperation的參數(shù)含義與用法,結(jié)合實(shí)例形式分析了Swing組件的JFrame框架類中setDefaultCloseOperation方法的簡(jiǎn)單使用技巧,需要的朋友可以參考下
    2017-11-11
  • 淺析java并發(fā)中的Synchronized關(guān)鍵詞

    淺析java并發(fā)中的Synchronized關(guān)鍵詞

    這篇文章主要介紹了java并發(fā)中的Synchronized關(guān)鍵詞,本文通過(guò)思路代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論