代碼規範
1:
- 注意換行。
- 變量的聲明儘量是每一個變量獨佔一行,即使變量的類型是一樣的,方便變量註釋。
- 關鍵字之間只認一個空格。
- 不要使用技術性很高,難懂,易混淆的語句,方便日後的二次開發,和別人的維護。
- 注意編寫代碼的符號一定要使用英文的符號,即半角符號。
2:
註釋是個好東西,重要性不必說了。
註釋內的東西不被編譯。
// 單行註釋
/* 多行註釋 */
/**
*這裏是文檔註釋
*/
我們所看到的api其實就是有文檔註釋自動生成的。
基本數據類型
整數類型
- byte 1字節
- short 2字節
- int 4字節
- long 8字節
//創建整型變量
byte a=12;
byte a=12, b=-13;
//創建long類型的整型變量
long a=165415312L;
long a=123L;
long c=123L + 1565L;
//創建long類型的時候和其他的有點不一樣,需要在數值後面加上 L 或者是 l ,否則可能會造成精度的丟失。
在Java中一個整數有默認類型(int)
//十進制賦值
int a= 33;
//八進制賦值
int b=033;
//十六進制
int c= 0X33;
浮點類型
- float 4字節
- double 8字節
// 創建浮點類型變量
//浮點數的默認類型爲 double 類型
float a=1.1F;
float b=-2.4F;
//在小數的末尾需要加 F 或者是 f 後綴
double a=3.141592653;
double b=3.14159265253D;
//這裏呢,double的類型可以加上後綴 D 或者 d,或者不加,原因是浮點數的默認類型爲double
Java中的浮點值是近似值,非常不準確
例如:
double a = 4.35 *100;
System.out.println(a);
結果是
434.99999999999994
這個怎麼解決呢?
這就要使用一個方法
double a = 4.35 * 100;
System.out.println(Math.round(a));
這時輸出置就是:
435
再例如:
double a = 0.1;
double b = 2.0 - 1.9;
System.out.println(a == b);
按照我們所理解的應該是true
但機器的運行結果是:
false
怎麼來解決呢?
我們可以使用最小數對比法
可以和 1e-6 來相比較,如果是小於,我們就視爲0,反之亦反。這個最先是C語言中用來判斷是否爲零的
double a = 0.1;
double b = 2.0 -1.9;
System.out.println(Math.abs(a-b)<1e-6);
// Math.abs() 方法被用來取絕對值
答案是:
true
字符類型
用單引號包含的的可打印的單個符號。
'a', 'M', '8', '#', '文', ' '
//以上都是字符,以下不是
"A" //不是一個字符,因爲是用 雙引號擴起來的
'8' != 8 //左邊爲字符,右邊爲整型常量
這兩個8是不一樣的
System.out.println('8'*2); // 字符編碼 *2
System.out.println(8*2); //數值 *2
輸出結果是:
112
16
**char 的使用同C語言,不僅可以用來存字符,還可以用來存整數(即爲字符編碼),但是Java中的char採用了更高級的Unicode編碼,取值範圍爲
0~65536**
例如:
//以字符來賦值
char a1 = 'a';
char b1 = '漢';
char c1 = '2';
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
//以字符編碼來賦值
char a2 = 97;
char b2 = 27721;
char c2 = 50;
System.out.println(a2);
System.out.println(b2);
System.out.println(c2);
運行結果是:
a
漢
2
a
漢
2
轉義字符:
\' //單引號字符
\" //雙引號字符
\\ //反斜槓字符
\t //垂直製表符,將光標移動到下一個製表符的位置
\r //回車
\n //換行
\b //退格
\f //換頁
//示例:
System.out.ptintln("[\101]");
//這裏的‘\’表示以八進制賦值,101轉換爲十進制就是65,所以輸出的是 ‘A’
布爾類型
使用關鍵字: boolean 創建
這個類型只有兩個值:true false
關係運算符
運算結果是一個布爾值
同C語言一樣,不能夠串聯使用關係運算符
例如:
a < b
數據類型轉換
勿以小杯乘大物
小轉大:
- 隱式轉換(自動轉換)
這是自動轉換的順序圖:
低精度自動向高精度轉換:
低精度類型的值可以直接賦給高精度類型:
byte a = 8;
System.out.println(a);
int b= a;
System.out.println(b);
long c =b;
System.out.println(c);
double d = c;
System.out.println(d);
//char
char e = 'A';
int x = e-2;
//運行結果是:63
//這說明兩者是相互兼容的
- 顯式轉換(強制轉換)
可適用於引用的類型:
(類型名)要轉換的值
示例:
int a = 100;
byte b = (byte)a;
大轉小
只能使用強制轉換,還可能造成細節丟失
double x = 3.1415926;
float f = (float)x;
System.out.println(f);
int i = (int)x; //直接捨棄掉小數
System.out.println(i);
//這些都是要丟失的
自增自減運算符
- 前置形式
++a; // 先加1再使用
--b; //先減1再使用
- 後置運算
a++; //先使用,再加1
b--; //先使用,再減1
注意:
(a+b)++;
--(x+y);
//這種寫法是錯誤的,諸如此類都是錯誤的
//只能夠給一個變量適用
三元運算符
返回值 = 判斷公式 ? 結果1 : 結果2;
int a = 1;
int b = a < 3 ? 20 : 30;
結果是:
20
注意:這個運算符是有返回值得,這個返回值是不能夠丟失的。
位運算符
- 位邏輯運算符
邏輯運算符運算結果:
總結:
與:同真爲真
或:有真爲真
異或:相同爲假,不同爲真
取反:真爲假,假爲真
注意:運算的時候要轉換成二進制!
- 位移運算符
int x = 64;
int y = 32;
// 位移之後是不對原變量的值產生影響
// x<<1; 這種寫法是錯誤的。
x = x << 1; //左移一位, 值乘以2
System.out.println(x);
//注意:下面的值分別是:8, 256
System.out.println(y>>2);
System.out.println(y<<3);
//
int x = 32;
x = x <<<2;
x = x>>>3;
//無符號位移
預算符的優先級
直接來圖爽快
來了圖,看了還是一臉的茫然,那就來點小題:
總結:
單目高於雙目
按照運算符的作用來看,()這種級別最高,之後依次是算數運算符,位運算符,關係運算符,邏輯運算符,賦值運算符。
邏輯運算符
還是直接來圖: