- Java語言GUI程序設計
- 趙滿來
- 2395字
- 2019-12-06 14:22:08
3.2 Java的運算符
程序中通常需要對常量和變量執行一些運算和操作,以實現數據處理的目的。運算符也稱為操作符,是Java語言中的一類特殊符號,用以指定對運算量(一般由常量和變量組成)所進行的特定運算和操作。
3.2.1 變量賦值與賦值運算符
如果要建立一個變量與其他常量或(和)變量的基本聯系,最常用的就是賦值操作。Java語言中的賦值運算符是“=”,最簡單的使用格式是:
變量名1 = 常量; 變量名2 = 變量名1;
例如,以下語句演示了變量的賦值操作。
int age, yourAge; // 聲明了整型變量age和yourAge age=35; // 使用整型常量35為變量age賦初值 yourAge=age+5; // 將變量yourAge初始化為比age大5(歲)的值 age=age+1; // 變量age的值增加1(比原年齡大了1歲)
3.2.2 算術運算符
Java語言定義了十幾個算術運算符用以執行算術運算。算術運算符的操作對象都是數值類型數據。Java語言的算術運算符如表3.3所示。
表3.3 Java語言的算術運算符

例如,圖2.12簡單的加法計算器程序第122行的語句:
double result = num1+num2;
首先執行變量num1與num2的加法運算,并將結果賦值給變量result。
變量的自加和自減運算改變變量本身的值,后自加和后自減首先取出變量原值,然后對變量執行加或減運算。例如:
int age=35; System.out.println(age++);
首先在輸出窗口打印age的初值35,然后使age變量的值改變為原值35加1,即輸出語句執行之后age變量的值為36。前自加和前自減運算符首先對變量執行加或減運算而改變變量的值,然后取出改變后的變量值。例如,如果程序段修改為:
int age=35; System.out.println(++age);
首先使age變量的值改變為原值35加1,即age變量的值為36,在輸出窗口打印age自加后的新值36。
算術復合賦值運算符+=、?=、*=、\=和%=的操作是先執行算術運算,再執行賦值操作。此類運算符左邊的變量是第一個操作數,右邊是第二個操作數,且左邊必須是變量名,右邊可以是運算式,運算結果賦值給左邊的變量。例如:
int age=35, var1=2; var1 *= age+5 ;
后面這條語句相當于“var1=var1*(age+5) ;”,最終變量var1存放的是整數80。
注意,兩個整數除運算的結果只取商的整數部分。例如,23/5的結果是4,而不是4.6,也不是5(不能四舍五入)。
3.2.3 關系運算符
關系運算符執行兩個量(變量或常量)的比較操作,返回比較的結果。比較結果是布爾邏輯值true或false。Java語言的關系運算符如表3.4所示。
表3.4 Java語言的關系運算符

關系運算符一般用于數值類型數據的比較操作。對于float和double類型的量(稱為浮點數),由于在計算機內存儲時存在誤差,因此不應直接應用==比較,而是比較它們的差值大小,只要差值在足夠小的范圍內(可以接受的誤差范圍),就可以認為它們是相等的。例如,以下代碼比較double類型變量x1和x2是否相等。

最后一條語句首先使用Math類(java.lang包中的類,不用導入即可直接使用)的abs方法計算x1?x2的絕對值,然后比較該值是否小于1×10?5,如果是返回布爾值true則認為變量x1與x2相等,否則返回布爾值false并認為變量x1與x2不相等,最后將返回的布爾值賦值給布爾型變量x1Bigx2。
3.2.4 邏輯運算符
Java語言提供了幾個專門的邏輯運算符對boolean類型的量進行邏輯運算。Java語言的邏輯運算符如表3.5所示。
表3.5 Java語言的邏輯運算符

邏輯非運算符“!”對一個操作數進行運算,且運算符“!”前置,其余邏輯運算符都對兩個操作數進行運算。很多情況下,關系運算和邏輯運算會同時出現在同一個運算式中。例如,對于如下Java語句:
int x=3, y=17; boolean yn=true, ans; ans = x<y && yn;
ans的值為true。因為,先計算“x<y”得到結果true,然后計算“true && true”得到結果true。如果第三條語句改為:
ans = x==y &&yn;
則ans的值為false。因為,先計算“x==y”得到結果false,然后計算“false && true”得到結果false。如果第三條語句改為:
ans = x<y && !yn;
ans的值為false。因為,先計算“!yn”得到結果false,然后計算“x<y”得到結果true,最后計算“true &&false”得到結果false。
簡潔邏輯與運算符&&和簡潔邏輯或運算符||具有“短路”特性,就是只要左邊的運算結果可以確定整個運算式的結果,就不會計算右邊的運算式。例如,對于如下Java語句:
int x=3, y=17; boolean yn=true, ans; ans = yn&&y++%x==0;
ans的結果計算:因為yn為true,還必須計算右邊運算式的值。首先獲取y的值為17,再除以3(x的值)取余數為2,然后計算“2==0”的結果為false,所以ans的值為“true &&false”得到false,x值為3,y值為18(最后執行自加運算)。如果第三條語句改為:
ans = yn&&++y%x==0;
ans的結果計算:因為yn為true,還必須計算右邊運算式的值。首先計算“++y”——y先自加1其值變為18,再除以3(x的值)取余數為0,最后計算“0==0”的結果為true,所以ans的值為“true && true”得到true,x值為3,y值為18。如果第三條語句改為:
ans = !yn&&++y%x==0;
因為邏輯運算符&&左邊的“!yn”結果為false,所以ans可以立即得到結果為false,不會再執行右邊的計算,y變量的自加運算也不會執行,因此y保持初始值17。在JShell中的執行結果如下(刪除空行)。
jshell> int x=3, y=17; x ==> 3 y ==> 17 jshell> boolean yn=true, ans; yn ==> true ans ==> false jshell> ans = !yn&&++y%x==0; ans ==> false jshell> x x ==> 3 jshell> y y ==> 17 jshell>
3.2.5 位運算符
Java語言提供了幾個對操作數的二進制位進行操作的運算符,稱為位運算符。表3.6列出了Java語言的位運算符。
表3.6 Java語言的位運算符

定點數包括Java基本數據類型中的char、byte、short、int和long,它們在計算機內部是以二進制補碼的形式表示和存儲的。正數的二進制補碼就是其他各進制數直接轉換為二進制數得到的數。負數的補碼計算方法是:首先計算出該數相反數的二進制補碼且空出的高位(左邊位)用0填滿,然后各位按位取反,最后加1。例如,整數類型的常量?12的補碼計算如下。

例如,9&5算式如下:

9|5算式如下:

9^5算式如下:

~9的運算為:

與算術運算符一樣,位運算符也可以與賦值運算符組合成復合賦值運算符。例如:
int a=15,b; a >>= 2;
則等價于“a = a>>2;”。因此賦值結果是,變量a的值變為3。
以上例子只是說明Java語言位運算符的具體計算方法。如果程序中需要使用二進制數,或者需要進行數制轉換,定點數包裝類都有現成的方法可以使用。例如:
Integer.parseInt("1111111111110110",2)
將返回二進制數1111111111110110的十進制值。又如:
Integer.toBinaryString(249)
將返回十進制數249的二進制值字符串。同樣:
Integer.toHexString(249)
將返回十進制數249的十六進制值字符串,結果為。
3.2.6 其他運算符
1. ( )運算符
括號運算符( )將操作數放在括號內部。它的具體操作有多種:首先可以用于改變運算次序,與數學常識一致,優先進行括號內的運算;其次可以強制轉換它后面操作數的類型,例如,“(int)1.2L”的結果是將長整型常量1.2L轉換為整型常量1.2;第三種操作是為方法提供參數,例如“Integer.toBinaryString(249)”中的括號運算符就是將整型常量249傳遞給Integer類的方法toBinaryString。后面兩種用法以后會進行詳細介紹。
2. 字符串鏈接運算符+
當運算符“+”用在字符串與字符串之間,或字符串與其他類型數據之間時,會將兩個字符串鏈接起來,或者將其他類型轉換為字符串,再與運算符+的另一側的字符串鏈接起來。在Java程序設計中,這種用法十分普遍。例如:
String str = "你好!"+" Welcome to use! ";
str變量值是。再如:
int year=20; System.out.println("你的年齡是:" + year);
輸出結果是“你的年齡是:20”。
在Java GUI程序設計中,經常會使用這個運算符將整數等其他類型的數據轉換為字符串,然后傳遞給需要字符串的方法中。例如,對于文本字段組件jTextField1,不允許直接將數值類型數據設置為它的text屬性,即“jTextField1.setText(234.12f);”是錯誤的,但可以采用以下方法設置:
jTextField1.setText(""+234.12f);
3. 條件運算符? :
條件運算符的一般格式是:
操作數1 ? 操作數2 : 操作數3
其中,操作數1是可以返回邏輯值的運算式,如果其值是true,則條件運算符的運算結果是操作數2的值,否則是操作數3的值。例如:
31%2==1 ? "31是奇數" : "31是偶數"
該運算式的結果是:31是奇數。而運算式:
36%2==1? "36是奇數":"36是偶數"
結果是:。
前面在類的初步知識介紹中涉及的“.”稱為分量運算符,new操作符也屬于運算符。此外還有幾個運算符,遇到的時候再介紹。
- 零基礎學Visual C++第3版
- Learning ASP.NET Core 2.0
- Python計算機視覺編程
- Rust Cookbook
- Mastering JBoss Enterprise Application Platform 7
- Python算法從菜鳥到達人
- Learning JavaScript Data Structures and Algorithms
- Flutter跨平臺開發入門與實戰
- Android應用案例開發大全(第二版)
- 深入剖析Java虛擬機:源碼剖析與實例詳解(基礎卷)
- 零代碼實戰:企業級應用搭建與案例詳解
- 區塊鏈架構之美:從比特幣、以太坊、超級賬本看區塊鏈架構設計
- 寫給大家看的Midjourney設計書
- Application Development with Swift
- PhoneGap 4 Mobile Application Development Cookbook