java se入门_java SE 入门之运算符(第三篇)
在 java 中主要有以上運算符,分為 賦值運算符 ,算術運算符、關系運算符(比較運算符),邏輯運算符和三目運算符(三元運算符).
我們一起來學習下吧!
一、賦值運算符
賦值運算符主要有五個、分別是 = (賦值)、+=(加上一個在賦值)、-=(減去一個在賦值)、*=(乘以一個在賦值)、/=(注意斜杠別打反了,這是除以一個在賦值)和%=(取摸在賦值)
“=” 叫賦值運算符,就是把一個值付給一個變量,賦值時候使用的。這個就不詳細說明了,前面有篇文章叫做java入門之八大基本類型、已經講解過了,下面我看兩行代碼“+=”的使用
public classHello {public static voidmain(String[] args ) {int a=1;
a+=10;intb;
b+=10;
}
}
賦值運算符+=
b+=10;這行代碼等價于 b=b+10,我們上一節(jié)的曾經提到過,在java中變量如果要使用必須先賦值。
同理
b+=10<=等價于=>b=b+10; //變量加字面值10
b-=10<=等價于=>b=b-10;//變量減去字面值10
b*=10<=等價于=>b=b*10;//變量乘以字面值10
b/=10<=等價于=>b=b/10;//變量除以字面值10
b%=10<=等價于=>b=b%10;//變量取摸字面值10
取摸:就是取余數,就是變量除以一個數的余數(后邊算術運算符會講解)。
下面我們在來看下代碼:
public classHello {public static voidmain(String[] args ) {short s=1000;short sum=s+100;
}
}
賦值運算符02
上述代碼竟然報錯啦!!!!???@¥#@**一臉懵逼啊。
其實 我們的s 變量是short 類型的,而我們的100是int 類型的。所以兩個類型不一致,而我們的int類型的范圍大,所以需要強制類型轉換,這里在說下強制類型轉換和自動類型轉換的定義。
強制類型轉換是我們的大類型轉換到小類型的轉換。我們小類型到大類型的轉換,叫自動轉換。所以如下代碼就不會報錯.
public classHello {public static voidmain(String[] args ) {short s=1000;short sum=(short) (s+100);//圓括號"()"代表一個整體,方括號“[]”代表所引器、花括號“{}”代表體,如方法體,循環(huán)體等后續(xù)會講到,這個必須要整體轉換
int count=s+100;
}
}
賦值運算符,自動轉換
現在代碼我們不這樣寫了,我換一種寫法,先看代碼
public classHello {public static voidmain(String[] args ) {short s=1000;//short sum=s+100;//int count=s+100;// s+=100;//s+=100 <===>s=s+100;
short sum=s;
}
}
當這個代碼拷貝到分析器的時候,你會發(fā)現,是可以編譯的,這個是為什么呢??!@#¥%……,
有一臉懵逼。
這是因為,在java 中,內部給我們做了強制類型轉換,所以這個地方容易出面試題。到這里,賦值運算符我們就學完了。
二、算術運算符
算術運算符主要有 ++(自加運算符) 、--(自檢運算符)、*(乘法運算符)、/(觸發(fā)運算符)、+(加法運算符)、-(減法運算符)和%(取摸運算符),
其中 +,-,*,/,% 叫做單目運算符,也叫單元(一元)運算符。
++,-- 叫雙目運算符,也叫雙元運算符
下面來看下非了雙目運算符的代碼
public classHello {public static voidmain(String[] args ) {int a=1024;int b=128;
System.out.println(a+b);//加法運算
System.out.println(a-b);//減法運算
System.out.println(a*b);//取積
System.out.println(a/b);//取商
System.out.println(a%b);//取余
}
}
在看下輸出結果
有些人會認為很簡單
可是在看下邊的代碼:
public classHello {public static voidmain(String[] args ) {int a=11;int b=5;
System.out.println(a/b);//取商
System.out.println(a%b);//取余
}
}
可是結果不一樣了
這是為什么呢?11 除以5應當等于2.2啊可是結果為什么會是2呢,因為我們的變量是整數,要取整的。那第二個為什么刪除的1 。我們先來你看下小學數據計算公式,
我們除號運算符求的是商,我們取摸運算符是取余。
有人會問,如果我想要小數怎么辦??
public classHello {public static voidmain(String[] args ) {int a=11;double b=5;
System.out.println(a/b);//取商
System.out.println(a%b);//取余
}
}
就是我們計算的表達式,至少有一個是小數,計算的結果就是小數.
下面我們在來看下++和--,
++是什么意思呢,就相當于自身加1,下面我們來看下代碼
public classHello {public static voidmain(String[] args ) {int i=0;
i++;
System.out.println(i);
}
}
這個輸出的結果是1,“--”同理,就是自身減去1.i++ 等價于 i=i+1 同時還等價于 i+=1;
那么 i++和++i的結果是不是一樣的.在java 中 ++和--是可以出現在變量前后的,只是位置不同.
public classHello {public static voidmain(String[] args ) {int i=0;int num=i++;
System.out.println(i);
System.out.println(num);int n=0;int number=++n;
System.out.println(n);
System.out.println(number);
}
}
看到結果,我們回答縣,i++輸出的是0,而++n輸出的是1,這就終結了一句話。
變量++是先賦值使用后自加,++變量是先自加后使用賦值.“--”同理。
三、關系比較運算符
在java中比較運算符常用的有這6個 ? >、 ?=、 ?<=, 他們的到的值有且只能是布爾值?boolean 類型的.下邊我們來看下這個表格,你就明白了,這個就是小學一年級的比較運算。比較結果成立我們得到的是true,不成立得到的是false.
比較運算符成立表達式
序號
運算符
說明
b變量a =11 ,值b=10 (a 不等式b)
a=10,b=11(a不等式b)
案列
1
>
大于
true
false
無
2
<
小于
false
true
無
3
==
恒等于
false
false
無
4
!=
不等于
true
true
無
5
>=
大于等于
true
false
無
6
<=
小于等于
false
true
無
這個沒什么好演示的,就此揭過,后續(xù)會經常用到這些不等式的.
四、字符串連接符
在java 中字符串拼接有且只有“+”一個拼接符號。但是在NET中會推出很多,后續(xù)會講解NET 中的字符串拼接符,?字符串連接符就是“+”號, 字符串拼接分在算術運算符中就是相加的意思,但是在字符串中是拼接的意思,我們在java中字符串用雙引號表示。
public classHello {public static voidmain(String[] args ) {int a=10;int b=5;
System.out.println(a+b);double c=3.14;
System.out.println(c+a);
System.out.println("wbcsky"+a);
System.out.println(a+"wbcsky");
System.out.println( "a+b="+a+b);
}
}
根據上面胡代碼,我們可以總結一句話:“當加號的兩邊是數字(含小數)就進行加法運算,如果加號的任意一邊是字符串,就進行字符串拼接”; 注意,拼接不是做強制類型轉換,做的是自動轉換。
在上述代碼中
System.out.println( "a+b="+a+b);這句話的結果沒有截圖,這句話的結果是 a+b=105;
解釋下,a+b= 這部分是一個字符串,當加上a的時候"a+b="+a 也是一個字符串,所以在加b的時候是拼接字符串.
這里留下個問題?當我想輸出 10+5=15 和 a+b=15,這個要怎么寫.
五、邏輯運算符
在java 中邏輯運算符分為兩種,一種叫做?邏輯運算符? && (并且) ||(或者)
另一種叫做?位運算符? “!” (非) ? “^” (異或)“|”(或) ?“&”(與)
位運算
我們先學習位運算符,位運算符是針對二進制進行計算的,也就是說,把我們任何類型轉換成為二進制,通過二進制去比較,位運算兩邊的類型相同返回的類型相同,兩邊類型不同,返回得不一定是哪個,這個沒有深入研究,太底層了
。看代碼
public classHello {public static voidmain(String[] args ) {int a=1;int b=2;int c=a&b; //a與b
System.out.println(c);int d=a|b;//a或b
System.out.println(d);int e=a^b;//a 異或 b
System.out.println(e);//boolean f=a!b;//a 非 b 是會報錯的,在JDK 1.5以前的版本,是可以寫的//System.out.println(d);
}
}輸出結果位0、3、3.
來看下a 與 b 是怎么來比較的。 因為a=1 a 是四個字節(jié) 也就是說是32 位 。二進制換算在上一篇文章有介紹 ,我們這里只描述后面8位,因為前面都是0.
變量a 的二進制表示為 0000 0001 ,變量b的二進制表示為 0000 0010 。看下圖
總結:運算時均把運算數轉換為二進制再做比較。
規(guī)則(&):當相同的位上均為1時結果為1,否則結果為0 ,術語叫做“有0則為0”,下圖的案列就有均為1。
規(guī)則(|):當上下兩邊操作數的位有一邊為1時,結果為1,否則為0,0000 0011 二進制轉10進制結果為3,術語叫做有1則為1
怕大家看不懂,后邊在列個例子
a^b(a異或b)規(guī)則 兩邊的位不同時,結果為1,否則為0.如0000 0001^0000 0010=0000 0110 轉換成為十進制則為3.,術語叫做 1,0不等則為1,這里就不過多解釋了。
"非"的位運算往往返回的是boolean 類型,主要是和“=”等號一起使用,用于表示等于和不等于,!的術語叫做 “0變1,1變0” ,就是說 0代表的是false,1 代表的是true(這句話不懂沒關系,往下學),true 取反的時候就是false,反之亦然。
在開發(fā)過程中,位運算符往往用在邏輯上,主要用在同類型的數據對比上,但是非和異或用的很少,大家主要記住或和與。
邏輯運算
剛學習了位運算,下邊我們看下 ?怎么在邏輯運算里面使用位運算。
public classHello {public static voidmain(String[] args ) {int a=9;int b=1;
System.out.println(a>0&b<10); //true |true = True 有假則為假 有0則為0
System.out.println(a>10&b<0); //false|false =false 有假則為假 有0則為0
System.out.println(a>0&b<0);//True|false=false 有假則為假 有0則為0
System.out.println(a>0|b<10); //true |true = True 有真則為真 有1則為1
System.out.println(a>10|b<0); //false|false =false 有真則為真,沒有就是false 有1則為1
System.out.println(a>0|b<0); //True|false=true 有真則為真 有1則為1
}
}
可以把上面的代碼輸出結果整理下,就出現如下:
再來學習下 &&和 & ,|| 和| 的區(qū)別,我們管&& 叫”短了與“,||叫”短路或”。
public classHello {public static voidmain(String[] args ) {
boolean b1=true;
boolean b2=false;
System.out.println(b1&&b2);
System.out.println(b1&b2);
}
}
這個代碼執(zhí)行的結果都是false,也就是說,他們在使用的結果是一樣的。那他們有沒有什么不通點呢,看下邊的代碼:
public classHello {public static voidmain(String[] args ) {
boolean isBool=false;
boolean b=true;
boolean ool=true;int num=1;
b=isBool&num++>0;
System.out.println(b);//false
System.out.println(num);//2
int number=1;
ool=isBool&&number++>0;
System.out.println(ool);//false
System.out.println(number);//1
}
}
根據上面的輸出結果我們可以看出, isBool 變量是false,后邊的num++>0 是一個true的表達式,一個false 與上任何一個布爾表達式返回的都是false(其實第一個不等式就已經可以分別出結果了),而一個運算符“&”執(zhí)行了i++,而兩個的沒有執(zhí)行,說明兩個運算符合起來使用效率更高.
總結:一個“與”的邏輯運算符效率低,兩個“與”的邏輯運算符效率會高跟多,不會再次計算。
六、三目運算符
三目運算符也叫做三元運算符,,之前我們學習了一目運算是一個運算符,二目運算是兩個運算符組合,現在三目運算就是三個運算符組合使用。
語法格式為 布爾表達式?表達式1:表達式2; 以問好開始,以冒號分割,以分號結尾。當布爾表達式為真,執(zhí)行表達式1,如果布爾表達式為假,執(zhí)行表達式2.表達式1和表達式2可以是一個值。
public classHello {public static voidmain(String[] args ) {
System.out.println(1>2?"為真進入":"為假進入");
String result=2>1? "true": "false";//String 代表字符串,后續(xù)會講解字符串
System.out.println(result);
}
}
上訴代碼輸出了“為假進入”和“false”.。三目運算符是可以嵌套的,下邊我們在來看下列子
public classHello {public static voidmain(String[] args ) {int a,b=20;
a=10;int num=a>b?a
System.out.println(num);
System.out.println(a>b?(a
}
}
兩種寫法輸出結果都是20,第一種方法,可讀性比較差。到這里,我們基本學習了java 中常用的運算符了。后續(xù)想起什么,在更新。
總結
以上是生活随笔為你收集整理的java se入门_java SE 入门之运算符(第三篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php io流 读取wav,记php中的
- 下一篇: 做旋转铁甲机器人_「铁甲评测」柳工CLG