目錄
一、基本算數運算符
二、自增自減運算符
三、賦值運算符
四、關系運算符
五、邏輯運算符
六、三元運算符
七、 運算符的優先級
八、小案例:在程序中接收用戶通過鍵盤輸入的數據
聲明:本文章根據黑馬程序員b站教學視頻做的筆記,可對應課程聽,本文章所對應的課程鏈接如下:09、Java語法:算術運算符、+符號做連接符_嗶哩嗶哩_bilibili
本章主講運算符。
運算符的定義:對變量,字面量進行運算的符號
一、基本算數運算符
對上表的解釋:
①+,-,*,/,%分別是加減乘除,取余
②?/號注意,兩個整數做除法,其結果一定是整數,因為表達式的最終結果類型是由表達式的最高類型決定,兩個整數相除,表達式最高類型是整數(整型),要是得到小數在式子里給被除數乘以1.0(就是小數的位數)
?③+除了做基本的數學運算 還能做連接符,在與字符串做+運算的時候會被當成連接符,其結果還是字符串。
④我們在開發中主要需要識別這個加號是連接符還是能運算的。
?識別技巧(能算則算,不能算就在一起)
?例如,
int ? a=5
sout.(a+'a'+"hhh");
?輸出;102hhh
?因為變量a等于5,字符a在計算機存儲為97,所以算則算,5+102=107,后面字符串不能算,直接連在一塊就行。?
二、自增自減運算符
注:++ 、-- 只能操作變量,不能操作字面量的。?(字面量就是具體的數)
代碼中的問題:
自增自減運算符放在變量前后有區別嗎?
(1)如果單獨使用放前后沒區別,例如i++;和++i;沒有區別,就是單獨一個語句沒有區別。單獨使用例子:i++;
(2)非單獨使用,在變量前,先進行變量自增自減,在使用變量(加號在前,先加在用)
?非單獨使用,在變量后,先使用變量,在進行變量自增/自減(加號在后,先用再加)例子:
int a = 10;
int rs = ++a; (先加再用) ???int b = 10;
int rs = b++; (先用再加) ???
三、賦值運算符
賦值運算符包括:
- 基本的賦值運算符:= (從右邊往左)
int a = 10;? // 先看“=”右邊,把數據10賦值給左邊的變量a存儲。
- 擴展的賦值運算符:+=、-=、*=、/=、%=
擴展的賦值運算符的特點隱含了強制類型轉換。強轉能規避一些bug,詳解:例如
int a=10;
int b=20;
a+=b;
System.out.println(a);//30
以上第三行代碼的解釋:a=(int)a+b;就是a等于a+b,并把結果強轉為int類型然后賦值給a.
其他擴展的賦值運算符與上面類似。(開發中用的最多的是+=和-=)
四、關系運算符
1.定義:判斷數據是否滿足條件,最終會返回一個判斷的結果,這個結果是布爾類型的值:true或者false。??
2.注:在java中判斷是否相等一定是“== ” ,千萬不要把? “== ”誤寫成 “=”。??
五、邏輯運算符
1.定義:把多個條件放在一起運算,最終返回布爾類型的值:true、false。
2.在java中, “&” 、 “|”:?? 無論左邊是 false還是 true,右邊都要執行。
3.由于&&、運算效率高(出結果快)、在開發中用的更多。
4.實際開發中、常用的邏輯運算符還是:&& 、 || 、 !
package com.gezi.string;public class string {public static void main(String[] args) {//目標:掌握邏輯運算符的使用//需求:要求手機滿足尺寸大于等于6.95,且內存必須大于等于8double size =6.8;int storage =16;//1. &前后的條件結果必須都是true,結果才是true.boolean rs= size >= 6.95 & storage >= 8;System.out.println(rs);//需求2,要求手機要么滿足尺寸大于等于6.95,要么內存必須大于等于8//2.只要多個條件中有一個是true,結果就是trueboolean rs2=size >= 6.95 | storage >= 8;System.out.println(rs2);//3. !取反的意思System.out.println(!true); //falseSystem.out.println(!false); //trueSystem.out.println(!(2>1)); //false//4.^ 異或,前后條件的結果相同時返回false,不同時返回trueSystem.out.println(true^true); //falseSystem.out.println(false^false); //falseSystem.out.println(true^false); //trueSystem.out.println(false^true); //true//5. && 左邊為false,右邊不執行,結果直接是falseint i =10;int j=20;System.out.println(i > 100 && ++j>99);//false//雙與邏輯符發現左邊為false,所以右邊不執行,所以j的值不變,即為20,輸出表達式的值為falseSystem.out.println(j); //j=20//而 & 發現左邊為false,仍然會執行右邊,即j=21,表達式結果是一樣的都為falseSystem.out.println(i > 100 & ++j>99); //falseSystem.out.println(j); //j=21//6. ||左邊是true,右邊不執行,結果直接是trueint m=10;int n=30;//||發現左邊是true,右邊不執行,輸出表達式結果為true,n的值為30System.out.println(m > 3 || ++n > 40); //trueSystem.out.println(n);//而 | 發現左邊為true,仍然會執行右邊,輸出表達式值是一樣的,為true,但n的值變了,變成31System.out.println(m > 3 | ++n > 40); //trueSystem.out.println(n);}
}
六、三元運算符
?1.格式:條件表達式???? 值1?:?值2;
?2.執行流程:首先計算關系表達式的值,如果值為true,返回值1,如果為false,返回值2。
?3.小案例:需求,用三目運算符找出三個整數中最大的整數
package com.gezi.string;public class string {public static void main(String[] args) {//需求:找三個整數中的較大值int a=10;int b=45;int c=34;int temp=a>b ? a : b; //先找出兩個數中誰較大,用臨時變量temp來存儲這個臨時結果,//上面那行代碼對應的含義是 判斷a>b嗎,若a大則執行第一個位置的表達式,即把a的值賦給temp,若a不大于b,則返回第二個位置的值,即把b的值賦給tempint max=temp >c ? temp :c; //把兩個數中較大的跟c比較,誰大就是誰最大。//上面那行代碼對應的含義是 判斷temp>c嗎,若temp大則執行第一個位置的表達式,即把temp的值賦給max,若temp不大于c,則返回第二個位置的值,即把c的值賦給maxSystem.out.println(max); //輸出值45}
}
七、 運算符的優先級
定義:在表達式中,哪個運算符先執行后執行是要看優先級的,例如 “*、/” 的優先級高于”+、-”。優先級高的先執行,具體優先級看下表
記憶口訣:括號級別最高,逗號級別最低,單目 > 算術 > 位移 > 關系 > 邏輯 > 三目 > 賦值。
寫代碼的一個辦法,當你不確定運算符的優先級的時候,那就想要誰先執行,就給誰套上括號。
八、小案例:在程序中接收用戶通過鍵盤輸入的數據
package com.gezi.string;import java.util.Scanner;public class string {public static void main(String[] args) {//學會java中接受用戶在鍵盤上錄入的數據————調用Scanner工具類//1、導包:一般不需要我們自己做,idea工具會自動幫助我們 導包的。// 2、抄寫代碼:得到一個鍵盤掃描器對象(東西)Scanner sc =new Scanner(System.in); // new一個Scanner對象// 3、開始 調用sc的功能,來接收用戶鍵盤輸入的數據。System.out.println("請您輸入您的年齡:");int age =sc.nextInt(); // 執行到這兒,會開始等待用戶輸入一個整數,直到用戶按了回車鍵,才會拿到數據。System.out.println("請您輸入您的名字:");String name =sc.next();// 執行到這兒,會開始等待用戶輸入一個字符串,直到用戶按了回車鍵,才會拿到數據。System.out.println(name + "歡迎您進入系統~~");}
}
代碼里面用到的相關知識:
? ?①API (Application Programming Interface:應用程序編程接口)
- Java寫好的程序,咱們程序員可以直接拿來調用。
- Java為自己寫好的程序提供了相應的 程序使用說明書(API文檔)。
- 下載API文檔:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html
- API與JDK的包含關系如下圖:
②Scanner工具類調用步驟
1、導包:import java.util.Scanner;(idea中自動導)
2、抄代碼得到掃描器對象: Scanner sc = new Scanner(System.in)
3、抄代碼等待接收用戶輸入的數據:
int age =? sc.nextInt()? //接整型變量
String name = sc.next()? //接字符串變量
day02天后半個筆記就到這里啦!喜歡的友友點個收藏吧 ~
持續更新中~