Java語法基本之運算符進修筆記分享。本站提示廣大學習愛好者:(Java語法基本之運算符進修筆記分享)文章只能為提供參考,不一定能成為您想要的結果。以下是Java語法基本之運算符進修筆記分享正文
1、運算符
運算符包含上面幾種:
算術運算符賦值運算符比擬運算符邏輯運算符位運算符三目運算符
最不經常使用的是位運算符,但也是最接近盤算機底層的。
1、算術運算符
(1)+的幾種用法:加法、負數、字符串聯接符
(2)除法的時刻要留意一個成績:整數相除,只能獲得整數。要想獲得小數,可以將數據本身*1.0,行將數據本身先轉換為浮點型。
2、賦值運算符
符號 = += -= *= /= %=
注:=為根本的賦值運算符,其他的為擴大的賦值運算符
面試題:
(1)short s=1, s = s+1;
(2) short s=1, s+=1;
下面兩個代碼有無成績,假如有,哪裡有成績?
謎底:代碼(1)是有毛病的,會喪失精度,byte,short在界說的時刻,他們吸收的實際上是一個int類型的值。這個是本身做了一個數據檢測的,假如不再它們的規模內,就報錯。後果以下:
代碼(2)沒有毛病,由於:擴大的賦值運算符其實隱含了一個強迫類型轉換。
也就是說,i += 1; 不是等價於 i = i + 1; 而是等價於 i = (i的數據類型)(s + 1);
3、關系運算符
注1:比擬運算符的成果都是boolean型,也就是要末是true,要末是false。
注2:比擬運算符“==”不克不及誤寫成“=” 。舉例:
4、邏輯運算符
(1)邏輯運算符用於銜接布爾型表達式,在Java中弗成以寫成3<x<6,應當寫成x>3 & x<6 。
(2)“&”和“&&”的差別?同理, “|”和“||”的差別?
A:終究成果都一樣。例如:A和B必需同時為真,A&B、A&&B的成果才為真。B:&&具有短路後果,右邊是false,左邊不履行。||具有短路後果,右邊是true,左邊不履行。
注:開辟中經常使用的邏輯運算符: &&,||,!
(3)異或( ^ )與或( | )的分歧的地方是:當閣下都為true時,異或的成果為false。
5、位運算符:
固然開辟頂用的不多,但會在許多源碼中看到,由於盤算機底層的盤算都是位運算。
面試題1:完成兩個整數變量的交流
代碼以下:
/* 面試題:請本身完成兩個整數變量的交流 */ class OperatorTest { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //方法1:應用第三方變量(開辟頂用的) int c = a; a = b; b = c; System.out.println("a:"+a+",b:"+b); System.out.println("------------"); //方法2:用位異或完成(面試用) //右邊: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:請用最有用率的方法寫出盤算2乘以8的成果。
謎底:2 * 8等價於2 << 3
常識回想:
<<:左移 右邊最高位拋棄,左邊補齊0 >>:右移 最高位是0,右邊補齊0;最高為是1,右邊補齊1 >>>:無符號右移 不管最高位是0照樣1,右邊補齊0
6、三目運算符:
格局:(關系表達式)?表達式1:表達式2;
假如前提為true,運算後的成果是表達式1;
假如前提為false,運算後的成果是表達式2;
示例:
獲得兩個數中年夜數:
int x=3,y=4,z;z = (x>y)?x:y;//z變量存儲的就是兩個數的年夜數。
獲得三個整數中的最年夜值:
//方法一:分兩步 //A:先比擬a,b的最年夜值 //B:拿a,b的最年夜值在和c停止比擬 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行是一樣的,是三目運算符的嵌套應用。
比擬兩個整數能否相等:
//比擬兩個整數能否相等 int m = 100; int n = 200; //boolean flag = (m == n)? true: false; boolean flag = (m == n); System.out.println(flag);
二 、鍵盤錄入數據
我們今朝在寫法式的時刻,數據值都是固定的,然則現實開辟中,數據值確定是變更的,所以,我預備把數據改良為鍵盤錄入,進步法式的靈巧性。
若何完成鍵盤錄入數據呢?(今朝先記住應用)
(1)導包(地位放到class界說的下面):import java.util.Scanner;
(2)創立鍵盤錄入對象:Scanner sc = new Scanner(System.in);
(3)經由過程對象獲得數據:int x = sc.nextInt();
代碼舉例:
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。