[Java入門筆記] Java語言基礎(三):運算符

簡介

運算符是一種特殊的符號,運算符是經過必定的運算規則操做一個或多個操做數,並生成結果的特定符號,運算符和操做數的有效組合稱爲表達式。html

Java中運算符主要分爲如下幾類:編程

  • 賦值運算符
  • 算術運算符
  • 關係運算符
  • 邏輯運算符
  • 條件運算符(三目運算符)
  • 位運算符

賦值運算符

賦值運算符用於給變量或者常量指定值,賦值運算符的符號是"="。測試

spa

int a = 1;  //定義時直接賦值
int b;
int c;
b = c = 2;  //能夠在一個語句內爲多個變量賦值
int d = b + 3;   //變量運算後再賦值,先執行右邊,再執行左邊

算術運算符

Java支持加減乘除和求餘等基本數學運算。分別是如下幾種:htm

運算符blog

說        明ip

一元ci

-數學

一元減,即取負table

++

自增,如:++a等價於a = a + 1

--

自減,如:--a等價於a = a – 1

二元

+

加法,返回兩個操做數的和

-

減法,返回兩個操做數的差

*

乘法,返回兩個操做數的積

/

除法,返回兩個操做數的商

%

取模,返回兩個操做數整除後的餘數

加法運算符:+

double a = 1.1;
double b = 1.2;
double sum = a + b;
System.out.println(sum);  //輸出2.3

減法運算符:-

double a = 2.2;
double b = 1.1;
double sub = a - b;
System.out.println(sub);  //輸出1.1

乘法運算符:*

int a = 11;
double b = 1.2;
double multiply = a * b;
System.out.println(multiply);  //輸出1.32

除法運算符:/

除法運算符有點特殊:若是運算的兩個值都是int,獲得的結果也是int類型,會把小數點直接去掉,也不會四捨五入

複製代碼

int a = 10;
int b = 4;
double c = a/b;
System.out.println(c);  //10初4原本結果是2.5,可是兩個int類型數相除結果是int類型數,儘管將結果值賦給了double,
              //但輸出結果變成了2.0,至關於運算完成時將小數點給去了,再轉換爲2.0

double a2 = 5.2;
double b2 = 3.1;
double c2 = a2/b2;
System.out.println(c2);  //兩個double值運算,輸出結果:1.6774193548387097

System.out.println(5 / 0.0);  //除數爲double型0.0,輸出負無窮大
System.out.println(5 / 0);  //除數爲0,運行時會報錯

複製代碼

求餘運算符:%

複製代碼

int a = 5;
int b = 3;
double c = 3.2;
System.out.println(a%b);  //輸出2
System.out.println(a%c);  //1.7999999999999998

System.out.println(0%5);  //輸出0
System.out.println(5%0);  //運行會出錯

複製代碼

求負:-

int i = -1;
int i2 = -i;
System.out.println(i2);  //輸出1

自加:++

int i = 1;
i++;  //至關於將i的值加1;
System.out.println(i); //輸出2

自加符號既能夠放在變量前面,也能夠放在變量後面,放在前面先把操做數加1,再進行表達式的運算,放在後面則相反。

int i1 = 1;
int i2 = 1;
int i3 = i1++;  //此時i3的值爲1,i1的值爲2;它是先將i1的值賦給了i3,再將i1加1;
int i4 = ++i2;  //此時i4的值爲2,i2的值也爲2;它是先將i2的值加1,再將值賦給i4;

自減:--

做用相似於自加

int i1 = 1;
int i2 = 1;
int i3 = i1++;  //此時i3的值爲1,i1的值爲0;它是先將i1的值賦給了i3,再將i1減1;
int i4 = ++i2;  //此時i4的值爲0,i2的值也爲0;它是先將i2的值減1,再將值賦給i4;

關係運算符(比較運算符)

關係運算符能夠測試兩個操做數之間的關係(但不會改變操做數的值),關係表達式的結果爲boolean型true/false:

運算符

說        明

==

等於,檢查兩個操做數是否相等

!=

不等於,檢查兩個操做數是否不相等

>

大於,檢查左操做數是否大於右操做數

>=

大於等於,檢查左操做數是否大於或等於右操做數

<

小於,檢查左操做數是否小於右操做數

<=

小於等於,檢查左操做數是否小於或等於右操做數

System.out.println(4 == 4);  //結果爲true
System.out.println(4 != 3);  //結果爲true
System.out.println(true == false);  //結果爲false

邏輯運算符

邏輯運算符用於操做boolean類型的變量或常量

運算符

說        明

Java

一元

!

邏輯非(NOT)

二元

&

邏輯與(AND)(不短路)

左邊爲false,依然會運算右邊

 

|

邏輯或(OR)

如左操做數爲true,依然運算右邊操做數

&&

短路與

如左操做數爲false,則不運算右操做數

||

短路或

如左操做數爲true,則不運算右操做數

^

異或

當兩個操做數不一樣時返回true,相同則返回false

看例子

System.out.println(!true);  //結果爲false
System.out.println(2 > 1 && 1 > 1); //結果爲false
System.out.println(2 > 1 || 1 > 1); //結果爲true
System.out.println(true ^ false);  //結果爲true,異或,至關於把第一個前面一個值true取反,再進行「或」運算

 

下面咱們來看一下 |於||的區別

int a = 1;
int b = 1;
if(a == 1 | b++ > 1){
    System.out.println(b);  //輸出b的值爲2,按位或雖然|符號左邊結果爲true,但依然會執行|符號右邊的代碼
}

 

 將|改成||

int a = 1;
int b = 1;
if(a == 1 || b++ > 1){
    System.out.println(b);  //輸出b的值爲1,||符號左邊結果爲true,不會再執行||符號右邊的代碼
}

 

 條件運算符(三目運算符)

它的通常形式是:

  表達式1 ? 表達式2 : 表達式3

根據表達式1的結果來判斷執行表達式2仍是表達式3,若是表達式1的結果爲true,則執行表達式2,不然執行表達式3;

條件運算符在某些狀況下可以替代小型的if…else語句。

String s = 1 > 2 ? "1大於2" : "1不大於2";
System.out.println(s); //輸出 1不大於2

位運算符

位運算符既參加運算的兩個數據,按二進制位進行運算。Java的位運算符有以下7個:按位與(&)、按位或(|)、按位非(~)、按位異或(^)、左移運算符(<<)、右移運算符(>>)、無符號右移運算符(>>>)。

具體介紹能夠參考下面這篇文章:

http://www.cnblogs.com/yezhenhan/archive/2012/06/20/2555849.html

 

運算符的優先級

不少狀況下,一個表達式由多個運算符組成,優先級決定運算符的計算順序:

優先級

運    算    符

1

括號: ()和[]

2

一元運算符:-、++(前置)、--(前置)、!

3

算術運算符:*、/、%、+和-

4

關係運算符:>、>=、<、<=、==和!=

5

邏輯運算符:&、|、&&和||

6

條件運算符:? :

7

賦值運算符:=、*=、/=、%=、+=和-=

儘管運算符有優先級,一個表達式中會根據表達式運算符的優先級進行前後運算,可是在實際編程中若是一個表達式很長也不會推薦這樣寫,而是分爲幾步寫,由於寫在一塊兒可讀性太差。

相關文章
相關標籤/搜索