1. 程式人生 > >java 基本型別和運算子

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