運算子
算數運算子
在Java中,使用算術運算子+、-、*、/表示加、減、乘、除運算,當參與/運算的兩個運算元都是整數時,表示整數除法運算;否則,表示浮點除法,整數的求余操作(取模)用%表示,
例如:15/2等于7,15%2=1,15.0/2=7.5
ps:整數被0除會產生例外,而浮點數被0除將會得到無窮大或NaN結果
運算子
算數運算子
在Java中,使用算術運算子+、-、*、/表示加、減、乘、除運算,當參與/運算的兩個運算元都是整數時,表示整數除法運算;否則,表示浮點除法,整數的求余操作(取模)用%表示,
例如:15/2等于7,15%2=1,15.0/2=7.5
ps:整數被0除會產生例外,而浮點數被0除將會得到無窮大或NaN結果
數值型別之間的轉換
下圖表示數值之間的轉換關系
圖中的6個實線箭頭表示無資訊丟失的轉換;另外有3個虛線箭頭表示有精度丟失的轉換
例如:一個lint型別的整數123456789,將這個數轉換為float型別時,將會得到正確的大小,但會損失一些精度
int num = 123456789;
float f = (long)num;//f = 1.23456792E8
當用一個二元運算子連接兩個數時(例如 a + b),先要將兩個數的型別轉換為同一個型別,然后在進行運算
- 如果兩個運算元中有一個是double型別,另一個運算元就會轉換為double型別,最后的結果也就是double型別
- 否則,如果兩個運算元中有一個是float型別,另一個運算元就會轉換為float型別,最后的結果也就是float型別
- 否則,如果兩個運算元中有一個是long型別,另一個運算元就會轉換為long型別,最后的結果也就是long型別
- 否則,兩個運算元都將被轉換為int型別
自動轉換和強制轉換
型別優先級:byte--->short--->char--->int--->long--->float--->double
double d = 6;//int-->double 自動型別轉換
int i = (int)6.5;//double--->int 強制型別轉換 (強轉)
//i = 6(精度缺少)
優先級小的轉為優先級大的:自動轉換
優先級大的轉為優先級小的:強制轉換
強制轉換的語法格式是在圓括號中給出想要轉換的目標型別,后面緊跟變數或者變數名
public class TestVar10{
public static void main(String[] args){
//在同一個運算式中,有多個資料型別的時候,應該如何處理:
//多種資料型別參與運算的時候,整數型別,浮點型別,字符型別都可以參與運算,唯獨布爾型別不可以參與運算,
//double d2 = 12+1294L+8.5F+3.81+'a'+true;
double d2 = 12+1294L+8.5F+3.81+'a';
System.out.println(d2);//將d2列印在控制臺上
/*
當一個運算式中有多種資料型別的時候,要找出當前運算式中級別最高的那個型別,然后
其余的型別都轉換為當前運算式中級別最高的型別進行計算,
double d2 = 12+1294L+8.5F+3.81+'a';
= 12.0+1294.0+8.5+3.81+97.0
*/
int i2 = (int)(12+1294L+8.5F+3.81+'a');//因為右邊自動轉換為double型別,所以要強轉為int型別
//以下情況屬于特殊情形:對于byte,short,char型別來說,只要在他們的取值范圍中,賦值的時候就不需要進行
//強轉了直接賦值即可,
byte b = 12;
System.out.println(b);
byte b2 = (byte)270;
System.out.println(b2);
}
}
本文章參考Java核心卷1
寫在最后
作為Java初學者,發博客的主要目的是為記錄自己的學習程序,幫助自己更好的鞏固基礎,也希望這些小的知識點可以為友友們帶來一點幫助,如果有說的不對的地方,歡迎大家在評論區指出,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458423.html
標籤:Java
