??博客主頁:?A_SHOWY
??系列專欄:力扣刷題總結錄?數(shù)據(jù)結構??云計算??數(shù)字圖像處理??力扣每日一題_?運算符是一種特殊的符號,用于表示數(shù)據(jù)的運算、賦值和比較
算數(shù)運算符
取模 %的本質: a - (int)a / b * b//當a是小數(shù)時
public class Hello {
public static void main(String[] args) {
System.out.println(10 % 3);//1
System.out.println(-10 % 3);//-1
System.out.println(10 % -3);//1
System.out.println(-10 % -3);//-1
}
}
自增
獨立語句使用時,++i和i++沒有區(qū)別的。但是如果作為表達式使用,++i先自增后賦值,++i先賦值后自增。和c++沒有區(qū)別。注意自增運算符的優(yōu)先級大于算數(shù)運算符。
面試題1:
?答:其主要過程為按照規(guī)則使用臨時變量temp,先將i存到臨時變量temp中,再對i進行自增,再把temp賦值給i,所以最后的值為1。
面試題2
答: 其主要過程為按照規(guī)則先將i自增,然后 將存到臨時變量temp中,再將temp存到i中,最后i的值為2。
關系運算符
關系運算符的結果都是boolean型,要么true要么false ,關系運算符組成的表達式稱為關系表達式。? ? ? ?
邏輯運算符
用于連接多個條件,最終結果也是boolean值。
分為兩組:第一組短路與&& 短路或|| 取反!
第二組與& 邏輯或| 邏輯異或 ^
- ?短路與&& 和邏輯與&相比效果相同,但是短路與的效率更高因為在判斷第一個為假時,短路與直接判定為false,而邏輯與不管第一個判斷如何都對兩個進行全部的判斷。
- 短路或和邏輯或的思想是類似的,也是遵循這個“短路”的特性,第一個條件為真后邊就不判斷了。
- 邏輯異或^,兩邊一真一假不同的才為真??偨Y為相同為真不同為假
賦值運算符
+= -= *= /=? 和c++一模一樣?
復合賦值運算符會進行類型的轉換
byte b = 3;
b += 2;//b = byte(b + 2);等價,底層有一個類型轉換
三元運算符
條件表達式?表達式1:表達式2
- 如果條件表達式為真,運算后的結果是表達式是1,否則是2
- 表達式1和表達式2為可以賦給接收變量的類型(或可以自動轉換)
int c = a > b ? 1.1 : 2.6;//錯誤的
-
它的本質是if else 語句
-
例子:三個數(shù),尋找最大值,用一句語句
int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
關于運算符優(yōu)先級
- 只有單目運算符和賦值運算符是從右向左運算
- 大致分為(1)(),{}等(2)單目運算:++ -- ^ !(3)算數(shù)運算符:+ -(4)位移運算符:>> <<<(5)比較運算符(6)邏輯運算符(7)三元運算符(8)賦值運算符?
標識符的命名規(guī)格和規(guī)范
規(guī)則:
- 由26個英文字母大小寫,0-9或$組成
- 數(shù)字不能開頭,不能用關鍵字和保留字,但是可以包含
- 嚴格區(qū)分大小寫,長度無限制
- 標識符不能包含空格
規(guī)范:
- 包名多單詞組成時所有字母小寫
- 類名和接口名所有單詞的首字母大寫XxxYyyZzz(大駝峰)
- 變量名和方法名xxxYyyZzz(小駝峰)?
- 常量名:所有字母都大寫
?例子:
import java.util.Scanner;//引入scanner類所在的包
public class Hello {
public static void main(String[] args) {
//創(chuàng)建Scanner類的對象,scanner就是Scanner類的對象
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入姓名");
String name = scanner.next();
System.out.println("請輸入年齡");
int age = scanner.nextInt();
System.out.println("請輸入成績");
double score = scanner.nextDouble();
System.out.println("name: " + name + "\t" + "age: " +age + "\t" + "score: " + score);
}
}
?進制
- 二進制:只用0 和1 來表示一個數(shù)? ?開頭0b/0B
- 十進制
- 八進制:以數(shù)字0開頭
- 十六進制:0-9 A-F來表示數(shù),用0x打頭
進制的轉換
第一組:其他進制轉十進制? ?
二進制轉十進制? 例:0b1011:1 * 2的零次方 + 1 * 2的一次方 + 1 * 2的三次方 = 11?
八進制轉十進制? 例:0234? ?: 4 * 8的零次方 + 3 * 8的一次方 + 2 * 8的二次方 = 156
十六進制轉十進制 例:0x23A:10 * 16的零次方 + 3 * 16的一次方 + 2 * 16的二次方 = 570?
第二組:十進制 轉成其他進制
十進制轉二進制:例: 34
十進制轉八進制:例:131(同理)得:0203
十進制轉十六進制:例:237(同理)得:0xED
第三組:不同進制間的轉換
二進制轉八進制和16進制:0b11010101?
轉八進制:每三位一組,轉成對應的八進制數(shù)0325
轉十六進制:每四位一組,轉成對應的十六進制數(shù) 0xD5
八進制轉二進制:八進制每一位數(shù),轉成一個對應的3位二進制數(shù) 例:0237
02(010)3(011)7(111) ——> 0b10011111
十六進制轉二進制:十六進制每一位數(shù)轉成4位的二進制數(shù) 例:0x23b
0x2(0010)3(0011)b(1011)——> 0b1000111011
原碼 反碼 補碼
對于有符號的數(shù),有8個原則:
- 二進制的最高位是符號位,0代表正數(shù),1代表負數(shù)
- 正數(shù)的原碼、反碼、補碼都是一樣的
- 負數(shù)的反碼是符號位不變,其他位取反(0變1 1變0)
- 負數(shù)的補碼是反碼+1 ,負數(shù)的反碼等于補碼-1
- 0的反碼補碼都是0
- java的數(shù)都是有符號的數(shù)
- 計算機運算時候,都是以補碼的方式進行運算的
- 看運算結果的時候要看它的原碼(運算看補碼,結果看原碼)
位運算符:
java 中有7個
例:
(很重要)
>> 算數(shù)右移:低位溢出,符號位不變
<<算數(shù)左移:低位補0,符號位不變?
>>>邏輯右移:低位溢出,高位補0,沒有<<<符號
練習:文章來源:http://www.zghlxwxcb.cn/news/detail-807974.html
int i = 66;
System.out.println(i++ + i);//133,i++ 被用在表達式中,它的值是 66(使用當前值,然后增加 1,但在這個表達式中使用的是當前值)。
int i = 66;
System.out.println(++i + i);//134
?文章來源地址http://www.zghlxwxcb.cn/news/detail-807974.html
到了這里,關于JAVA學習筆記——第四章 運算符的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!