java 基本型別和運算子
一.java的特性
- java語言由JamesGosling和BillJoy 的指導下由Sun公司開發的。
- java是編譯語言也是解釋語言 java原始碼----> 位元組碼--->java執行時直譯器執行
- java指定所有基本資料型別的大小
- 除基本資料型別為,java中所有物件都可以通過引用來訪問(一種‘安全性指標’,不能進行算數運算)
- Java所有操作都是傳值操作
- java 不支援預設引數
- java是面嚮物件語言,程式碼的基本單位是類
1 類的組成:
1.資料項(也稱變數/欄位) 2. 函式(也稱方法)
2.一個類可以建立不同的物件,每個物件都是同一個類的例項. 類相當於模板,物件相當與通過模板製作出的個體
3.通過引用訪問物件, 類型別的變數即為物件的引用 A obj1 = new A(); //變數obj1就是對new所建立的物件的引用
4.一個類可以有多個子類,但只能有一個父類(超類),唯一例外 Object類,它無父類
- 不允許自定義操作符過載,java中唯一過載的運算子 ‘+’,用於字串連線 ,和算數加法運算
- 沒有原始碼前處理器,因此沒有 巨集、#define 語句或條件編譯
- main() 方法是應用程式的入口,每個java應用至少包含一個帶有main()方法的類
-
專案名全部小寫 包名全部小寫
類名首字母大寫,每個單詞的首字母都要大寫。
變數名、方法名首字母小寫,每個單詞的首字母都要大寫。
5、 常量名全部大寫
如:public static final String GAME_COLOR=”RED”;
- 以{ } 分割程式碼塊
- java的安全模型
從內到外 :1.java二進位制碼 java執行時系統中固定的部分
2.位元組碼校驗器(靜態的校驗 一種數學“定理證明機”)
3類載入器 負責將一個或多個java類的位元組碼置入直譯器中
4.安全性管理器()
5系統資源(應用級:檔案系統、網路埠、視窗環境)
二.java的資料型別 運算子
0註釋
// 單行註釋
/* 多行
註釋
*/
/**
* 塊註釋 (文件註釋)
*習慣每行以*開頭
*有java SDK的javadoc程式抽取並將其生成產HTML文件 前導的空格和*都會被忽略
*文件註釋可以出現在類 方法 變數 定義之前
* 說明 應用於 作用
*@see 相關類名 類 方法 變數 建立指向相關類文件的超文字連結
*@author 作者名 類 標記作者
*@version 版本 類 標記版本
*@param 引數名和描述 方法
*@return 返回值描述 方法
*@exception 異常名和描述 方法
*@deprecated 宣告某項過時 類 方法 變數
*@since 在新增項的時候提示API版本 變數
*以@開頭的行解釋為針對文件生成器的特殊指令
*/
1.資料型別
資料種類 分為兩種 1.基本型別 2. 引用型別
8種基本型別 按值傳遞
型別 | 定義 |
boolean | true 或 false |
char | 16位Unicode字元 (2位元組的無符號整數) |
byte | 8位有符號的二進位制整數 |
short | 16位有符號的二進位制整數 |
int | 32位有符號的二進位制整數 |
long | 64位有符號的二進位制整數 |
float | 32位IEEE754 浮點值 |
double | 64位IEEE754浮點值 |
變數
以字母開頭,可由字母 數字 _ $ 構成,不能與關鍵字重複
2.語句
宣告
型別名 變數名空格隔開 int a;
初始化 :在宣告的同時將其賦值
int a = 0+5;
int oct = 0123;//指定8進位制數 以0開頭
int hex = 0xFFFF; //指定16進位制數 以0x或0X開頭
int two = 0b10100101; //指定2進位制 以0b或0B開頭
float f = 3.54f;//f或F 必須
double do = 13513.153135;
boolean flag = true;
//char 字元直接量必須在''內 可以為字母 數字 字元 \uxxxx(x為16進位制)Unicode編碼序號
char c = 'a';
char b = '好';
char x = 0x9a12;//按照十六進位制的方式
char d = '\u122c';//按照Unicode字元形式
//java中出現的整數(整數直接量)如 0 100 121 -5 預設為int型別
//在整數直接量中可以使用_下劃線 分割數字
long x = 1010_1515;// 出現隱式型別轉換(範圍小的型別自動往大型別的方向轉換) 將int型 轉換成long
long l = 1E9L;//L或l 必須 為與1進行區分 建議使用L 指明這個整數位long型別
//將整數賦值給 byte 和 short 是必須 強制型別轉換(將範圍大的型別轉換成範圍小的型別)
byte b = (byte)12;
short sh = (short)154;
// 浮點數轉換成整型 將損失精度 需要強制型別轉換
int i = (int)12.5;
boolean 型別不參與型別轉換
宣告 賦值 if ;if else;if elseif else; for; while;do while;switch;break;continue;//與c同
try catch 和finally ;// ..
不可達語句 編譯時出錯
//不可達語句 編譯時出錯
if(1<2)
return;
表示式 的值
數字型別 (算術表示式)
引用型別(物件分配)
void(不返回任何值得方法)
3.運算子
算術:char byte short int long float double
整型:char byte short int long
優先順序 | 操作符 | 運算元型別 | |
1 | ++ -- + - |
算術
|
自增 自減 單目加 單目減 字首自增自減法(++a,--a): 先進行自增或者自減運算,再進行表示式運算。 字尾自增自減法(a++,a--): 先進行表示式運算,再進行自增或者自減運算 |
1 | ~ | 整型; | 按位取反 |
1 | ! | 布林; | 邏輯取反 |
1 | (type) | 任何型別 | 型別轉換 |
2 | * / % | 算術 | 乘除 加減 |
3 | + - | 算術 | 加法和減法 |
3 | + | 字串 | 字串連線 |
4 | << >> | 整型 | <<左移 高位捨棄,低位補0 右移(有符號擴充套件的右移, 低位捨棄,高位補符號位) 位運算 |
4 | >>> | 整型 | 無擴充套件的右移(高位補0,) 位運算 |
5 | instanceof | 物件 | 型別比較 子類是父類的型別,但父類不是子類的型別 |
5 | < > <= >= | 算術 | 運算 大於 小於 小於等於 大於等於 關係運算 |
6 | != == | 基本型別 | 不等 等於 (基本型別時:判斷變數內容是否相等) 關係運算 |
6 | != == | 物件 | 引用的相等和不等 (物件時:判斷變數引用物件的記憶體地址是否相同) |
7 | & | 整型 或布林 | 按位與 邏輯與(AND) |
8 | ^ | 整型 或布林 | 按位異或 邏輯異或(XOR) |
9 | | | 整型 或布林 | 按位或 邏輯或 (OR) |
10 | && | 布林 | 條件與 邏輯運算子 (特性: 短路) |
11 | || | 布林 | 條件或 邏輯運算子 (會短路 如: x||y 若x為true,則編譯器將不看y的值 ,僅計算第一個值,僅當有必要時才計算第二個運算元的) |
12 | ? : | N/A | 三門運算子 條件運算子 |
13 | = + = - = * = / =%= >> = << =&= ^ = | = | 任何型別 | 賦值 |
關於關係運算符 ==
//情況1 基本型別 看值
int i = 2;
int j = 2;
System.out.println( i==j ); //true
//物件以String為例
//1 將直接量賦給String
String str = "AB";
String str1 = "AB";
System.out.println( str==str1 ); //true
//2 以new建立
String strNew = new String("AB");
String strNew1 = new String("AB");
System.out.println( strNew==strNew1 ); //fasle
System.out.println( str == strNew ); //false
//結論: "==" 比較的是變數名的值,所謂變數名的值可以理解為變數名儲存變數的地址
//直接量賦給String時,相同直接量儲存的地址相同
//使用new將會在Heap堆申請一塊新的記憶體來建立物件
//以陣列為類
int []iArray = new int []{1,2};
int []iArray1 = new int []{1,2};
int []iArray2 = iArray;
System.out.println( iArray == iArray1 );//false
System.out.println( iArray == iArray2 );//true