Java語(yǔ)法基礎(chǔ)之運(yùn)算符學(xué)習(xí)筆記分享
一、運(yùn)算符
運(yùn)算符包括下面幾種:
算術(shù)運(yùn)算符賦值運(yùn)算符比較運(yùn)算符邏輯運(yùn)算符位運(yùn)算符三目運(yùn)算符
最不常用的是位運(yùn)算符,但也是最接近計(jì)算機(jī)底層的。
1、算術(shù)運(yùn)算符
(1)+的幾種用法:加法、正數(shù)、字符串連接符
(2)除法的時(shí)候要注意一個(gè)問(wèn)題:整數(shù)相除,只能得到整數(shù)。要想得到小數(shù),可以將數(shù)據(jù)自身*1.0,即將數(shù)據(jù)自身先轉(zhuǎn)換為浮點(diǎn)型。
2、賦值運(yùn)算符
符號(hào) = += -= *= /= %=
注:=為基本的賦值運(yùn)算符,其他的為擴(kuò)展的賦值運(yùn)算符
面試題:
(1)short s=1, s = s+1;
(2) short s=1, s+=1;
上面兩個(gè)代碼有沒(méi)有問(wèn)題,如果有,哪里有問(wèn)題?
答案:代碼(1)是有錯(cuò)誤的,會(huì)損失精度,byte,short在定義的時(shí)候,他們接收的其實(shí)是一個(gè)int類型的值。這個(gè)是自己做了一個(gè)數(shù)據(jù)檢測(cè)的,如果不再它們的范圍內(nèi),就報(bào)錯(cuò)。效果如下:
代碼(2)沒(méi)有錯(cuò)誤,因?yàn)椋簲U(kuò)展的賦值運(yùn)算符其實(shí)隱含了一個(gè)強(qiáng)制類型轉(zhuǎn)換。
也就是說(shuō),i += 1; 不是等價(jià)于 i = i + 1; 而是等價(jià)于 i = (i的數(shù)據(jù)類型)(s + 1);
3、關(guān)系運(yùn)算符
注1:比較運(yùn)算符的結(jié)果都是boolean型,也就是要么是true,要么是false。
注2:比較運(yùn)算符“==”不能誤寫(xiě)成“=” 。舉例:
4、邏輯運(yùn)算符
(1)邏輯運(yùn)算符用于連接布爾型表達(dá)式,在Java中不可以寫(xiě)成3<x<6,應(yīng)該寫(xiě)成x>3 & x<6 。
(2)“&”和“&&”的區(qū)別?同理, “|”和“||”的區(qū)別?
A:最終結(jié)果都一樣。例如:A和B必須同時(shí)為真,A&B、A&&B的結(jié)果才為真。B:&&具有短路效果,左邊是false,右邊不執(zhí)行。||具有短路效果,左邊是true,右邊不執(zhí)行。
注:開(kāi)發(fā)中常用的邏輯運(yùn)算符: &&,||,!
(3)異或( ^ )與或( | )的不同之處是:當(dāng)左右都為true時(shí),異或的結(jié)果為false。
5、位運(yùn)算符:
雖然開(kāi)發(fā)中用的不多,但會(huì)在很多源碼中看到,因?yàn)橛?jì)算機(jī)底層的計(jì)算都是位運(yùn)算。
面試題1:實(shí)現(xiàn)兩個(gè)整數(shù)變量的交換
代碼如下:
/*
面試題:請(qǐng)自己實(shí)現(xiàn)兩個(gè)整數(shù)變量的交換
*/
class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);
//方式1:使用第三方變量(開(kāi)發(fā)中用的)
int c = a;
a = b;
b = c;
System.out.println("a:"+a+",b:"+b);
System.out.println("------------");
//方式2:用位異或?qū)崿F(xiàn)(面試用)
//左邊:a,b,a
//右邊:a ^ b
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a
a = a ^ b; //a ^ b ^ a = b
System.out.println("a:"+a+",b:"+b);
//方式3:用變量相加的做法
a = a + b; //a=30
b = a - b; //b=10
a = a - b; //a=20
System.out.println("a:"+a+",b:"+b);
*
//方式4:一句話搞定
b = (a+b) - (a=b); //b=30-20=10,a=20
System.out.println("a:"+a+",b:"+b);
}
}
面試題2:請(qǐng)用最有效率的方式寫(xiě)出計(jì)算2乘以8的結(jié)果。
答案:2 * 8等價(jià)于2 << 3
知識(shí)回顧:
<<:左移 左邊最高位丟棄,右邊補(bǔ)齊0 >>:右移 最高位是0,左邊補(bǔ)齊0;最高為是1,左邊補(bǔ)齊1 >>>:無(wú)符號(hào)右移 無(wú)論最高位是0還是1,左邊補(bǔ)齊0
6、三目運(yùn)算符:
格式:(關(guān)系表達(dá)式)?表達(dá)式1:表達(dá)式2;
如果條件為true,運(yùn)算后的結(jié)果是表達(dá)式1;
如果條件為false,運(yùn)算后的結(jié)果是表達(dá)式2;
示例:
獲取兩個(gè)數(shù)中大數(shù):
獲取三個(gè)整數(shù)中的最大值:
//方式一:分兩步
//A:先比較a,b的最大值
//B:拿a,b的最大值在和c進(jìn)行比較
int temp = ((a > b)? a: b);
//System.out.println(temp);
int max1 = (temp > c? temp: c);
System.out.println("max1:"+max1);
//方式二:一步搞定
int max2 = (a > b)?((a > c)? a: c):((b > c)? b: c);
//這種做法不推薦:
//int max2 = a > b?a > c? a: c:b > c? b: c;
//System.out.println("max2:"+max2);
建議用方式一 。另外,方式二中,第10行和第12行是一樣的,是三目運(yùn)算符的嵌套使用。
比較兩個(gè)整數(shù)是否相等:
//比較兩個(gè)整數(shù)是否相等
int m = 100;
int n = 200;
//boolean flag = (m == n)? true: false;
boolean flag = (m == n);
System.out.println(flag);
二 、鍵盤(pán)錄入數(shù)據(jù)
我們目前在寫(xiě)程序的時(shí)候,數(shù)據(jù)值都是固定的,但是實(shí)際開(kāi)發(fā)中,數(shù)據(jù)值肯定是變化的,所以,我準(zhǔn)備把數(shù)據(jù)改進(jìn)為鍵盤(pán)錄入,提高程序的靈活性。
如何實(shí)現(xiàn)鍵盤(pán)錄入數(shù)據(jù)呢?(目前先記住使用)
(1)導(dǎo)包(位置放到class定義的上面):import java.util.Scanner;
(2)創(chuàng)建鍵盤(pán)錄入對(duì)象:Scanner sc = new Scanner(System.in);
(3)通過(guò)對(duì)象獲取數(shù)據(jù):int x = sc.nextInt();
代碼舉例:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java語(yǔ)言一元運(yùn)算符實(shí)例解析
- 淺談Java變量賦值運(yùn)算符及相關(guān)實(shí)例
- Java 邏輯運(yùn)算符中&&與&,||與|的區(qū)別
- Java中==運(yùn)算符與equals方法的區(qū)別及intern方法詳解
- JAVA 運(yùn)算符歸納總結(jié)
- Java 運(yùn)算符 動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Java利用條件運(yùn)算符的嵌套來(lái)完成學(xué)習(xí)成績(jī)的劃分
- java中關(guān)于移位運(yùn)算符的demo與總結(jié)(推薦)
- 整理Java編程中常用的基本描述符與運(yùn)算符
- 詳解Java中運(yùn)算符及用法
相關(guān)文章
java實(shí)現(xiàn)一個(gè)接口調(diào)取另一個(gè)接口(接口一調(diào)取接口二)
這篇文章主要介紹了java實(shí)現(xiàn)一個(gè)接口調(diào)取另一個(gè)接口(接口一調(diào)取接口二),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring.Net在MVC中實(shí)現(xiàn)注入的原理解析
這篇文章主要介紹了Spring.Net在MVC中實(shí)現(xiàn)注入的原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Java實(shí)現(xiàn)任務(wù)超時(shí)處理方法
任務(wù)超時(shí)處理是比較常見(jiàn)的需求,Java中對(duì)超時(shí)任務(wù)的處理有兩種方式,在文中給大家詳細(xì)介紹,本文重點(diǎn)給大家介紹Java實(shí)現(xiàn)任務(wù)超時(shí)處理方法,需要的朋友可以參考下2019-06-06
Spring Batch輕量級(jí)批處理框架實(shí)戰(zhàn)
本文主要介紹了Spring Batch輕量級(jí)批處理框架實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Spring Boot 2 Thymeleaf服務(wù)器端表單驗(yàn)證實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring Boot 2 Thymeleaf服務(wù)器端表單驗(yàn)證實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11









