1、變數:在程式的執行程序中,其值可以發生改變的量叫變數,
定義變數的格式:
1、資料型別 變數名 = 初始化值;
2、資料型別 變數名;
變數名 = 初始化值;
2、資料型別:
A:基本資料型別
整數型別: byte 1個位元組 -2^7~2^7-1
short 2個位元組 -2^15~2^15-1
int 4個位元組 -2^31~2^31-1
long 8個位元組 -2^63~2^63-1
浮點型別: float 4個位元組
double 8個位元組
字符型別: char 2個位元組
布爾型別: boolean 1個位元組
B:參考資料型別
自動型別轉換:
byte,short,char在參與運算的時候會自動提升到int型別
由大的資料型別接收小的資料型別,會自動轉換,不會報錯,
強制型別轉換
由小的資料型別接收大的資料型別,會報錯,接收不了,這時候需要強制型別轉換
格式:目標資料型別 目標變數名 = (目標資料型別)要轉換的數值/變數

例:byte b=(byte)130
計算機運算采用補碼的形式引數運算,所以需要把130換為二進制,
130的二進制為:10000010
130為整數默認為int型
130的原碼,反碼,補碼都為 00000000 00000000 00000000 10000010
所以已知補碼 10000010求原碼
得反碼 10000001
原碼 11111110
所以結果為-126
3、運算子:
(1) 算術運算子:+,-,*,/,%
/運算取整數,若想獲得小數(5*1.0/2)
++:符號在前先自增,再賦值(a=4;b=++a a=5;b=5) 符號在后,先賦值再自增;--同理,
(2) 賦值運算子:=,+=,-=,*=,/=,%=
例:a=b,把b賦值給a;
int a=10;a+=40;輸出50,這里可以看作a的值增加了40再賦值給a,但不能完全當作a=a+40.
接上面 a-=10;輸出40
a*=2;輸出80
a/=4; 輸出20
a%=3;輸出2
(3) 比較運算子:==,>,<,>=,<=,!=(結果都是Boolean型,所以接收只能是Boolean變數接收)
例:int a=10; int b=20;
System.out.println("a==b"); 輸出結果為false
System.out.println("a<b"); 輸出結果為true
System.out.println("a<=b"); 輸出結果為true
System.out.println("a!=b"); 輸出結果為true
(4)邏輯運算子:&,|,^,!,&&,||
&運算左右都為真結果為true,否則false
|運算只要有一邊為真結果為true
!運算使結果相反,true變false
異或(^)運算時,左右結果相同,結果為false
&&運算結果與&運算相同,執行的東西不同
||運算結果與|運算相同,執行的東西不同
&運算不管左右結果如何,兩邊都參加運算;&&運算時,若左邊為假則右邊不參加運算,


如圖,當a=7,a++==7為真,左右兩邊都參加運算;當a=7,a++==8為假,因為a++需先賦值在自增,所以右邊b++==沒有參加運算,輸出的b還是8
||運算同理,若左邊為真,則右邊不參與運算,


(5)位運算子:&,|,^,~,<<,>>,>>> (對二進制進行運算)
&運算 :二進制中和0運算結果為0,與1運算結果為原值
例:6&3
6的二進制:00000110
3的二進制:00000011
結果 :00000010
所以6&3輸出的結果為2
|運算:二進制中與0運算結果為原值,與1運算結果為1
例:6|3
6的二進制:00000110
3的二進制:00000011
結果: 00000111
所以6|3的結果為7
^運算:相同二進制運算結果為0,不同二進制運算結果為1
例:6^3
6的二進制:00000110
3的二進制:00000011
結果: 00000101
所以6^3的結果為5
~運算:0變1,1變0(反碼)
例:~6
6的二進制:00000110
運算得:11111001
已知補碼 : 11111001
求反碼: 11111000(負數,符號位不變)
原碼:10000111
所以~6的結果為-7
<<運算:二進制左移,右邊用0補齊,多余的舍棄,
例:3<<2
3的二進制:00000000 00000000 00000000 00000011
因為3是正數,原碼補碼反碼都一樣,
3的補碼: 00000000 00000000 00000000 00000011
左移2位: (00)00000000 00000000 00000000 00001100 (補碼)
最高位為0,所以為正數,既是補碼也是原碼
所以結果為 12
>>運算:二進制右移,左邊最高位是0用0補齊,最高位是1用1補齊,多余舍棄,
例:24>>2
24的二進制:00000000 00000000 00000000 00011000
24為正數,原碼補碼反碼一樣
24的補碼: 00000000 00000000 00000000 00011000
右移2位 : 00000000 00000000 00000000 00000110(00)
最高位為0,既是補碼也是原碼
所以結果為6
例:-24>>2
-24的二進制是:10000000 00000000 00000000 00011000
已知原碼求補碼:
原碼:10000000 00000000 00000000 00011000
反碼:11111111 11111111 11111111 11100111
補碼:11111111 11111111 11111111 11101000
右移2位:11111111 11111111 11111111 11111010(00) (補碼)
已知補碼求原碼:
補碼:11111111 11111111 11111111 11111010
反碼:11111111 11111111 11111111 11111001
原碼:10000000 00000000 00000000 00000110
所以結果為-6
>>>運算:無符號右移,無論最高位是0還是1,都用0補齊,多余舍棄,
例:-24>>>2
-24的二進制是:10000000 00000000 00000000 00011000
已知原碼求補碼:
原碼:10000000 00000000 00000000 00011000
反碼:11111111 11111111 11111111 11100111
補碼:11111111 11111111 11111111 11101000
無符號右移2位:00111111 11111111 11111111 11111010(00) (補碼)
最高位為0,所以是正數,原碼反碼補碼一樣,所以這就是最后的結果,
拓展:3<<2(12=3*2^2)
24>>2(6=24/(2^2))
(6) 三目運算子:(關系運算式)?運算式1:運算式2;
如果關系運算式為true,運算的結果為運算式1
如果關系運算式為false,運算的結果為運算式2
如圖:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/403918.html
標籤:其他
上一篇:Kimball維度建模
