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();
代碼舉例:
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。