運算符、表達式和語句
Java提供了豐富的運算符,如算術運算符、關系運算符、邏輯運算符、位運算符等。
Java語言中的絕大多數運算符和C語言相同,基本語句,如條件分支語句、循環語句等也和C語言類似,因此,本章就主要知識點給予簡單的介紹 。
運算符和運算表達式
加減運算符: +,-
加減運算符是二目運算符;加減運算符的結合方向是從左到右;加減運算符的操作元是整型或浮點型數據,加減運算符的優先級是4級。
乘、除和求余運算符: * / %
以上運算符是二目運算符,結合方向是從左到右,乘、除和求余運算符的操作元是整型或浮點型數據。運算符的優先級是3級。
關系運算符: > , < , >= , <= , == , !=
特點:關系運算符是二目運算符,用來比較兩個值的關系,見表4.1。
關系運算符的運算結果是boolean型,當運算符對應的關系成立時,運算結果是true,否則是false。
運算規則:
(1)在關系運算符中,當操作數是基本數據類型時,比較的是數據內容;
(2)在關系運算符中,當操作數是引用類型時,比較的是引用對象的引用值,
(3)判斷是否是同一對象,而沒有比較對象的內容
邏輯運算符 && || !
其中:&&、|| 為二目運算符,實現邏輯與、邏輯或;
!為單目運算符,實現邏輯非。
規則:
邏輯運算符的操作元必須是boolean型數據,邏輯運算符可以用來連接關系表達式,見表4.2。
&&,||也稱短路運算符
當前面的表達式op1的值為false時,&&運算符在運算時就不再去計算op2表達式的值;
當op1為true時,||運算符就不再計算op2的值。
(op1&&op2;op1||op2)。
public static void main(String args[]) { int x=10,y=10;if( ((x=0)==0) || ((y=20)==20) ) { System.out.println("現在x的值是:"+x);System.out.println("現在y的值是:"+y);}}}
//x的值是0,但y值依舊是10
位運算符
位運算符:是指對兩個整型數據按照對應的位進行運算,結果為新的整型數據。
“按位與”運算,“&”是雙目運算符。
運算法則是:如果a,b兩個數據對應位都是1,則c的該位是1,否則是0。
“按位或”運算“|”是雙目運算符
運算法則是:如果a,b兩個數據對應位都是0,則c的該位是0,否則是1。
“按位非”運算“~”是單目運算符。
運算法則是:如果a對應位都是0,則c的該位是1,否則是1。
“按位異或”運算“^”是雙目運算符。
運算法則是:如果a,b兩個數據對應位相同,則c的該位是0,否則是1。
class Example3_1
{ public static void main(String args[]){ char a1='十',a2='點',a3='進',a4='攻';char secret='8';a1=(char)(a1^secret); a2=(char)(a2^secret);a3=(char)(a3^secret); a4=(char)(a4^secret);System.out.println("密文:"+a1+a2+a3+a4);a1=(char)(a1^secret); a2=(char)(a2^secret);a3=(char)(a3^secret); a4=(char)(a4^secret);System.out.println("原文:"+a1+a2+a3+a4);}
}
/*
密文:卹炁迣攃
原文:十點進攻
*/
算術表達式
用算術符號和括號連接起來的符合java語法規則的式子,稱為算術表達式。
如:
x+2*y-30+3*(y+5)
自增,自減運算符
單目運算符,可以放在操作元之前,也可以放在操作元之后。操作元必須是一個整型或浮點型變量。作用是使變量的值增1或減1,
如:
++x(–x)表示在使用x之前,先使x的值增(減)1。
x++(x–)表示在使用x之后,使x的值增(減)1。
int f=2;
int m=2;
int x=(f*m++)+m; //x=7;
int y=(f*++m)+m; //y=9;
算術混合運算的精度問題
java中數據類型的精度從“低”到“高”排列的順序是:
byte short char int long float double
Java在計算算術表達式的值時,使用下列計算精度規則:
(1)如果表達式中有雙精度浮點數(double型數據),則按雙精度進行運算.
(2)如果表達式中最高精度是單精度浮點數(float型數據),則按單精度進行運算.
(3)如果表達式中最高精度是long型整數,則按long精度進行運算.
(4)如果表達式中最高精度低于int型整數,則按int精度進行運算.
(5)char型數據和整型數據運算結果的精度是int。
最低的計算精度是int
例如:5/2的結果是2,要想得到2.5,必須寫成5.0/2或5.0f/2。
例如:byte x=7; 則執行表達式 ‘B’+x; 的結果是int型。
import java.util.*;
public class Example3_9 {public static void main (String args[ ]){Scanner reader=new Scanner(System.in);double sum=0;int m=0;while(reader.hasNextDouble()){double x=reader.nextDouble();m=m+1;sum=sum+x;}System.out.printf("%d個數的和為%f\n",m,sum);System.out.printf("%d個數的平均值是%f\n",m,sum/m); }
}