Java基礎語法(1)

一:關鍵字

Java已經賦予了特殊含義的單詞,特色是都是小寫字母.(Java 關鍵字是區分大小寫的)java

 

目前見到的關鍵字:bash

public :公共的,公開的.權限修飾符,說明後面的類或者是方法誰均可以用.jvm

class :定義類的.編碼

static :靜態的,說明這個方法能夠屬於類,可使用類名直接調用.spa

void :.說明當前的方法沒有返回值.3d

main : 不是關鍵字.約定俗成的程序的入口點.code

 

 

二 :源文件能夠寫多少個類定義的演示

編譯的時候一個類編譯成一個.class文件,多個類生成多個.class文件對象

/*

演示:文件名和類名不必定保持一致

類前邊若是加public,那麼類名和文件名必須保持一致.

不然,文件名和類名能夠不一致.

此時,編譯成功的結果,字節碼文件的名稱和類名一致.

*/

// public class Demo4{

//沒有public修飾,代表權限是default(默認權限:包權限)

//沒有定義包的話,代表都在默認包中.

class Demo4{

  public static void main(String[] aa){

    System.out.println("hello");
  }
}

 

//想要被jvm虛擬機直接運行的類必須包含main方法,不然不用定義.

class Demo5{
  public static void main(String[] aa){
    System.out.println("hello");
  }
}

 

 

總結:blog

通常狀況下:一個源文件中只定義一個類,並且這個類是public修飾的,類名和文件名保持一致.接口

一個源文件中能夠包含多個類定義,可是public修飾的只能有一個.此源文件被編譯後,類分別生成本身的.class字節碼文件.

 

三:標識符

1:做用

  用於給方法、變量、接口等命名的字符序列

  

 

2:組成規則

  大小寫英文字母、下劃線、數字、$組成

  不能以數字開頭

  不可使用關鍵字,但能夠包含關鍵字

  java嚴格區分大小寫

 

3:命名規範

類名、接口名:

  多單詞組成時,全部單詞首字母大寫

包名:

  多單詞組成時,全部字母小寫

變量名、方法名:

  多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每一個單詞首字母大寫

final變量名:

  全部字母都大寫,多單詞時單詞之間用下劃線分割

  如:AAA_BBB_CCC

四:常量與變量

1:常量  

Java中常量分兩種:

  字面量:在程序中直接出現的值

  final變量:也稱爲final常量,這種變量一旦賦值,就不能改變.(常量名通常使用大寫字符)
  語法:final 常量名 = 值;

  

 

字面量:程序中直接出現的數值:

六種:

1.整數常量:直接出現的數字,不帶小數點

2.小數常量:直接出現的小數.必須帶小數點

3.字符常量:用單引號('')引發的 數字, 字母 ,字符.   注意:'' 不是空字符

4.字符串常量:用雙引號引發的單個字符或者是多個字符."" 也是字符串,空串.

5.布爾常量:true false   TRUE FALSE 嚴格區分大小寫.

6.null常量:全部的引用數據類型的一個空值.   備註:Null不能直接打印

其中:整型常量有四種表示方式:

十進制:每位上的數只能是1-9,滿101,默認的數值表示方式.

二進制:每位上的數只能是0,1,滿21,0b或者0B開頭.      

八進制:每位上的數只能是0-7,滿81,0開頭.

十六進制:每位上的數只能是0-9,A-F,滿161,0x 或者是0X開頭.

備註:進制的本質是權重, 如十進制數531,5的權重是100,3的權重是10,1的權重是1,

 

五:原碼,補碼,反碼

1:正數表示形式

針對正數,三者相同.
10 -> 0000 1010   原碼,反碼,補碼一致.

2:負數表示形式(在計算機上的表現形式)

負數用補碼錶示:
    補碼是反碼+1獲得:
    反碼是原碼數值位取反獲得.

原碼轉換爲反碼:符號位不變,數值位分別「按位取反」 

 


原碼轉換爲補碼:符號位不變,數值位按位取反,末位再加1

 

補碼轉換爲原碼:符號位不變,數值位按位取反,末位再加1。

即補碼的補碼等於原碼

 

六:變量

1:變量的三要素:

變量類型,變量名,變量值

2:定義變量的兩種格式:

(1)定義和賦值一塊兒進行:

  變量類型 變量名 = 初始值;

 

(2)先定義,後賦值.

  變量類型 變量名;

  變量名 = 初始值;

 

3:變量的含義

  變量就是一塊內存空間,裏面的值能夠隨時發生變化 

  

4:變量的數據類型

  

在 Java 的領域裏,基本數據類型變量存的是數據自己,而引用類型變量存的是保存數據的空間地址。

整型:     			    字節數
		byte			1
		short			2
		int			4
		long			8
浮點型:
		float			4
		double(默認)		8
字符型:
		char			2
布爾型:
		boolean			1

 

 
public class VariableDemo2{
    public static void main(String[] args){
        //定義變量
        //整型數值,若是是在前面的類型的表數範圍內,能夠直接賦值.!!!
        //系統會自動的將字面量int型轉換成和前面類型匹配的類型.
        /*
        byte b = 127;
        
        short s = 128;
        
        int i = 21245487;
        */
        
                
        //快速的獲取到int型的最大值
        System.out.println(Integer.MAX_VALUE);//2147483647
        System.out.println(Long.MAX_VALUE);//9223372036854775807
        long l = 2147483648L;
        long l2 = 10; //默認的類型轉換 : 從小範圍到大範圍.
        //字面量的int值不能超過int的表數範圍,若是超過int型最大值,加L/l後綴,代表是一個long
        
        /*
        //程序中出現的浮點型字面量默認是double類型
        //在數值後加後綴,f/F ,明確說明數值是float類型
        float f = 3.14f;
                
        double d = 3.14;
        
        char ch = 'a';
        
        boolean bool = true;
        */
        
        //變量如何使用???
        // System.out.println(b);//b
        // System.out.println(s);//
        // System.out.println(i);//

    }
}

 

 區別:

基本數據類型:
  數據直接保存在變量名所在的內存空間. 引用數據類型:   數據不是直接保存在變量名所在的內存空間,而是在另外的內存空間中.   變量名所在的內存空間保存的是一個地址值. 好比: Scanner s = new Scanner(System.in); 變量s中保存的就是等號右邊的對象所在的內存地址的地址值!!!

  

5:變量的做用域scope  

6:類型轉換

	類型轉換:
		隱式類型轉換:(自動類型轉換),不須要特殊的格式.
			從表數範圍小的到表數範圍大的.
		顯式類型轉換:(強制類型轉換)
			從表數範圍大的到表數範圍小的
		特殊的格式:
			變量名 = (目標類型)被轉換的值;
			int a = (int)3.14;
			
			
			
	強制類型轉換:
		針對小數:取整
		針對整數:高位截斷!!!
		
			double a = 128.5;
			byte b = (byte)a;
			b -> -128
			先取整,在高位截斷!!!

自動:由圖可知byte不會自動轉換爲char,同時在只有byte.char.short(也能夠有int型數據參與運算)類型數據參與運算時,都會自動轉換成int型進行計算,char是用unicode(int類型)參加運算,而不參加運算時則不會自動轉換.

強制:

 

public class TypeConvertDemo{
    public static void main(String[] args){
        /*
        //自動類型轉換
        int a = 10;
        long l = a;//int -> long
        System.out.println(l);
        //強制類型轉換
        double d = 3.14;
        int b = (int)d;//截斷 : 只保留整數部分
        System.out.println(b);//3
        */
        
        // byte b;
        // b = (byte)128; // 4 個字節.
        
        /*
            0000 0000 0000 0000 0000 0000 1000 0000 int型的128
            截斷:
            從高位截斷!
            1000 0000 -> 被保留的結果:負數-128
        */
        
        // System.out.println(b);
        
        //
        // double d = 128.5;
        // byte b = (byte)d;
        // System.out.println(b);
        
        //發生了兩次類型轉換
        // double -> byte
        // byte -> int
        int x = (byte)3.14;
        System.out.println(x);
    }
}
/*
    不一樣類型的變量進行運算,都會自動的往範圍大的類型進行轉型.
    
*/
public class TypeConvertDemo2{
    public static void main(String[] args){
        /*
        //int -> double
        double d = 3 + 1.5;
        
        //int -> long
        long l = 3 + 100L;
          
        
        short s1 = 10;
        short s2 = 20;
        // short s3 = s1 + s2;//short類型變量只要進行運算,首先無條件轉換成int型.
        long l = s1 + 100L;//short->int->long
                
        //char參與運算實際上使用的是對應的unicode編碼值.
        char ch = 'a';
        System.out.println(ch + 1);
    
        char ch1 = (char)97;// int -> char
        System.out.println(ch1);
        */        
        //
        byte b = 10;
        short s = b;//ok
        
        // char ch = b; //從byte轉換到char可能會有損失        
        
    }
}

 

七:運算符

1:算術運算符

 

 

+ - * :和數學中規則同樣
/ :當操做數都是整型,結果也是整型,小數部分捨棄
% :結果是除法操做的餘數.結果的符號取決於被模數.
++ -- :針對變量進行操做.
	前++ : 先對變量增長,再使用.
	後++ : 先使用變量原來的值,再增長.
	--同理:
+ : 當 + 兩側任意一側是字符串的時候,+就是鏈接符.

2:賦值運算符  

 

基本賦值運算符:
	=
擴展賦值運算符:
	+= -= *= /= %=
特色:不改變等號左邊的變量的類型,至關於系統自動加上了類型轉換.
	short s = 1;
	s = (short)(s + 1);// int -> short
	s += 1; //自動類型轉換

  

3:比較運算符

 

結果確定是一個boolean類型

 

4:邏輯運算符

 

 

 

 

/*
    演示邏輯操做符
    &    :兩個操做數都爲true,結果才爲true,不然就是false
    |    :兩個操做數有一個爲true,結果就爲true.兩個操做數都爲false,結果是false.
    &&  :短路與:當左側操做數爲false時,總體的結果已是false,右側就不參與運算了.
    ||     :短路或:當左側操做數爲true時,總體的結果已是true,右側就不參與運算了.
    ^    :異或:兩個操做數不一樣,結果才爲true.雙true,雙false 結果都是false.
    !    :取反,單操做數,true -> false ,false->true.
    
*/
public class LogicDemo{
    public static void main(String[] args){
        /*
        //布爾常量進行邏輯運算
        System.out.println(true && true);
        
        //布爾類型的變量進行運算
        boolean b1 = true;
        boolean b2 = false;
        boolean b3 = true;
        System.out.println(b1 & b2);
        System.out.println(b1 | b2);
        System.out.println(b1 && b2);
        System.out.println(b1 || b2);
        System.out.println(b1 ^ b3);
        System.out.println(b1 ^ b2);
        System.out.println(!b1);
        */
        
        //短路操做
        
        // int a = 1;
        // boolean b = true && (a++) > 1;
        // System.out.println(a);//2
        // System.out.println(b);//false

        // && 左側爲false,右側不參與運算.
        int a = 1;
        boolean b = false && (a++) > 1;
        System.out.println(a);//1
        System.out.println(b);//false        
    }
}

 

 

5:位運算符 

 

 

 

 

 

 

 

 

 

 

6:三元運算符

 

格式:
    (條件表達式) ? 表達式1:表達式2;

    若條件表達式值爲true,總體是表達式1的值.不然是表達式2的值.
System.out.println(2>1?2:1.0);   2.0
三元運算符中表達式1和表達式2的類型不一樣時,總體結果將自動轉型到表數範圍大的類型.

 

7:運算符的優先級

級別爲 1 的優先級最高,級別 11 的優先級最低

相關文章
相關標籤/搜索