一、進制轉換
參考這篇文章:
二進制、八進制、十進制、十六進制之間轉換
注意:
負數的二進制表現形式:
6= 110
-6:其實就是6的二進制取反+1
取反:将二進制的1變成0,将0變成1。
0000-0000 0000-0000 0000-00000 000-0110 (二進制6)
1111-1111 1111-1111 1111-1111 1111-1001 (二進制6取反)
+ 0000-0000 0000-0000 0000-0000 0000-0001 (二進制1)
1111-1111 1111-1111 1111-1111 1111-1010 = -6
總結:負數的最高位都是1。
二、基本資料類型
8種
1) 整型
byte 1B 8位 -128到127
short 2B 16位 -2^15到(2^15)-1
int 4B 32位 -2^31到(2^31)-1
long 8B 64位 -2^63到(2^63)-1
2) 浮點類型
float 4B 32位
double 8B 64位
3) 字元類型
char 2B 16位
4) 布爾型
boolean 1B 8位 false/true
注:
1、Java中的自動類型提升問題。
1)、正向過程:從低位元組到高位元組可以自動轉換。
byte->short->int->long->float->double
2)、逆向過程:從高位元組到低位元組用強制類型轉換。
例:int a = (int)3.141592653;//結果是3
注:逆向轉換将丢失精度。
2、boolean:隻有true和false。
3、char:Java中用" \u四位十六進制的數字 (即使在注釋中出現\u,後面如果跟的不是4個數字,也會報錯)"表示将字元轉換成對應的unicode編碼,字元類型要用單引号括起來。
4、黙認浮點類型為double,float資料類型有一個字尾為" f "或" F "。
5、long類型有一個字尾,為" l "或者" L "
三、自動類型提升
[java] view plain copy
- byte a = 2;
- byte b = 3;
- a = a+b; //編譯出錯自動類型提升成int
- a += b; //自加沒有自動類型提升問題
類型自動提升規則:
a和b作某種運算
a和b中有double,結果就是double
a和b中有float, 結果就是float
a和b中有long, 結果就是long
除此之外,結果都是int
注意:把高位元組轉成低位元組,需要作強制類型轉換. byte c=(byte)a+b;
四、移位運算符:
效率最高
>> 有符号右移,補符号位
移負數位,則将該數值加32後再進行移位
數值的2進制是按照補碼儲存的
>>> 右移後高位都補0
分析:交換兩個變量中的值
[java] view plain copy
- //1.借助temp臨時變量
- int temp;
- temp=n;
- n=m;
- m=temp;
- System.out.println("交換後的值:"+"\n"+"n="+n+"\n"+"m="+m);
[java] view plain copy
- //2.不借助臨時變量
- n=n+m;
- m=n-m;
- n=n-m;
- System.out.println("交換後的值:"+"\n"+"n="+n+"\n"+"m="+m);
[java] view plain copy
- //3.一個數異或同一個數兩次,結果不變
- n=n^m;
- m=n^m;//n^m^m等于n
- n=n^m;
- System.out.println("交換後的值:"+"\n"+"n="+n+"\n"+"m="+m);
[java] view plain copy
- //位運算符,進制轉換(十進制轉換為十六進制)
- int num=60;
- int n1=num & 15;//擷取num最低4位
- System.out.println((char)(n1-10+'A'));
- int temp=num>>>4;//要擷取下一組四位,将60右移4位
- int n2=temp & 15;//對temp的值進行最低四位的擷取
- System.out.println(n2);
五、邏輯運算符:
& 與 and
| 或 or
&& 先判斷前面一個條件,如果為假,則不用計算後一個條件
|| 先判斷前面一個條件,如果為真,則不用計算後一個條件
^ 異或(相同為flase,不同為true)
! 非 (!true=flase )
" + "運算符:兩個操作的對象是數值時,是加法。如果有一個是字元串時,則是字元串的連接配接。
六、轉義字元(常用)
\n換行
\b倒退。
\r按下回車
\t制表符(Tab鍵)
七、算數運算符
+ (數值相加,字元串相連。),-(雙目:減号。單目:負号), *, /, %(膜), ++(自增),--(自減)," + "運算符:兩個操作的對象是數值時,是加法。如果有一個是字元串時,則是字元串的連接配接。
八、指派和比較運算符
指派運算符:=,+=, -=,*=, /=, %=
比較運算符:==,!=,>,<,>=,<=,instanceof(檢查是否是類的對象)
int a,b,c;
a=b=c=3;//指派
注意:
short s=3;
s=s+2;//編譯失敗,s被提升為int類型,運算後結果還是int類型,無法指派給short類型。
s+=2;//編譯通過,因為+=運算符在給s指派時,自動完成了強制轉換工作。
比較運算符的結果都是boolean型(要麼true,要麼false)。
九、流程控制語句:
Java與C++相同。
If if…..else if….. else if…..else
switch中的變量類型隻能是byte、 short、int、char四種類型。
複習了兩天,做做小程式吧!
源代碼:
[java] view plain copy
- public class Narcissus
- {
- public static void main(String args[])
- {
- System.out.println("100~999之間水仙花數:");
- int k,a,b,c,d;
- for(k=100;k<1000;k++)
- {
- a=k/100;
- b=k%100/10;
- c=k%10;
- d=a*a*a+b*b*b+c*c*c;
- if(d==k)
- System.out.println(k);
- }
- }
- }
