標籤:語言 設計者 pow [] 變數 實值型別 無符號 out rgs
1、整數被0除會產生一個異常,而浮點數被0除將會得到無窮大或NaN的結果
2、例如: double w = x * y /z JAVA是注重可移植的語言,但是在進行計算的時候,由於64位儲存一個double值和80位浮點寄存器儲存一個double值是不一樣的,很多Intel處理器都是一步一計算的(這樣計算的結果更精確),最後結果再截斷為64位,這就和64位的機器計算的結果有所不同(直接結算,沒有中間過程),一次運算一儲存,有可能出現溢出或者計算速度慢的情況,JAVA程式設計語言承認了最優效能和理想結果之間存在的衝突,並做了改進。在預設的情況下,虛擬機器設計者允許將中間計算結果採用擴充的精度,但是對於使用strictfp關鍵字標記的方法必須使用嚴格的浮點計算來產生理想的結果。例如:public static strictfp void main(String[] args),於是main方法中的所有浮點計算都要進行嚴格的計算。
3、自增運算子、自減運算子
首碼方式先+1再運算,尾碼方式則是先運算後+1
4、關係運算子和boolean運算子
&&表示邏輯“與”、||表示邏輯“或”、!表示邏輯 NOT 它們採用“短路”的方式進行運算(也就是說 一旦第一個運算元能夠確定運算式的值,第二個就沒有必要計算了)
三元操作符:a?b:c
5、位元運算符:&(“與”)、|(“或”)、^(“異或”)、~(“非”)
位元運算符主要針對二進位
在處理整型數值時,可以直接對組成整數數值的各個位進行操作,這就意味著可以使用屏蔽技術獲得整數中的各個位
&和|運算子應用於布爾值,得到的結果也是布爾值,運算方式和&&、||不一樣,它們不按短路方式計算,而是一定要計算兩個操作的數的值
(1)&(“與”): 兩個運算元都為1,結果才是1,否則就是0
例如:int a = 129;
int b = 128;
System.out.println("輸出結果是"+(a&b)); //結果為128, “a”的值是129,轉換成二進位就是10000001,而“b”的值是128,轉換成二進位就是10000000。所以知道結果就是10000000,即128。
(2)|(“或”): 兩個運算元只要有一個為1,結果就是1,否則為0
例如:int a=129;
int b=128;
System.out.println("輸出結果是"+(a|b)); //結果為129
(3)^(“異或”): 兩個運算元中兩個相同為0,不同為1
例如:int a = 15;
int b = 2 ;
System.out.println(“輸出的結果是”+(a^b)); //結果為13 “a”的值是15,轉換成二進位為1111,而“b”的值是2,轉換成二進位為0010,所以可以得出其結果為1101 即13。
(4)~(非運算子) 如果位為1,則結果為0,如果位為0,則結果為1
例如: int a = 2;
System.out.println("a 非的結果是:"+(~a));
6、移位元運算符:”<<“ 左移 、 “>>” 右移 ”>>>“ 無符號右移
(位元運算符的計算比算數計算中的乘除運算速率更快)
左移n位相當於*2的n次冪(低位用0補),右移n位相當於/2的n次冪(如果值為正,則在高位補0,如果值為負,則在高位補1.),無符號右移,忽略符號位,所有空位都以0補齊
7、數學函數與常量:
Math方法(靜態方法)的標頭檔為:import static java.lang.Math.*;
Math類提供的常用的三角函數:Math.sin Math.cos Math.tan Math.atan Math.atan2
Math類提供的指數函數以及它的反函數——自然對數以及以10為底的對數:Math.exp Math.log Math.log10
JAVA中沒有冪運算,需要藉助Math類中的pow方法。例如:double y = Math.pow(x,a);
JAVA還提供了兩個用於表示π(pai)和e常量的近似值:Math.PI Math.E
8、數實值型別之間的轉換:
低精度——>高精度 無資訊丟失
高精度——>高精度 有可能有資訊丟失
強制類型轉換的方法:Math.round(遵循四捨五入)
9、枚舉類型:
enum Size{SMALL, MEDIUM,LARGE,EXTRA_LARGE};
Size s = Size.MEDIUM;
Size類型的變數只能儲存這個型別宣告中給定的某個枚舉值,或者null值,null表示這個變數沒有設定任何的值
JAVA基礎知識——運算子