1. 程式人生 > >Java學習之路(基礎一)

Java學習之路(基礎一)

基礎知識

關鍵字

  •   (1)被Java語言賦予特定含義的單詞
      (2)特點:全部小寫。
      (3)注意事項:
      	A:goto和const作為保留字存在。
      	B:類似於Notepad++這樣的高階記事本會對關鍵字有特殊顏色標記
    

識別符號

  •   常見的命名規則(見名知意)
      	A:包	全部小寫
      		單級包:小寫
      			舉例:package,Math。
      		多級包:小寫,並用.隔開
      			舉例:cn.itcast;com.baidu				
      	B:類或者介面
      		一個單詞:首字母大寫
      			舉例:Student,Demo
      		多個單詞:每個單詞首字母大寫
      			舉例:HelloWorld,StudentName
      	C:方法或者變數
      		一個單詞:首字母小寫
      			舉例:name,main
      		多個單詞:從第二個單詞開始,每個單詞首字母大寫
      			舉例:studentAge,showAllNames()
      	D:常量
      		全部大寫
      		一個單詞:大寫
      			舉例:PI
      		多個單詞:大寫,並用_隔開
      			舉例:STUDENT_MAX_AGE
    

註釋

  •   	(1)就是對程式進行解釋說明的文字
      	(2)分類:
      		A:單行註釋	//
      		B:多行註釋	/**/
      		C:文件註釋	/** */
      	(3)註釋的作用
      		A:解釋說明程式,提高了程式碼的閱讀性。
      		B:可以幫助我們除錯程式。
      			後面我們會講解一個更高階的一個除錯工具
    

資料型別

  •   (1)Java是一種強型別語言,針對每種資料都提供了對應的資料型別。
      (2)分類:
      	A:基本資料型別:4類8種
      	B:引用資料型別:類,介面,陣列。
      (3)基本資料型別
      	A:整數			佔用位元組數
      		byte			1
      		short			2
      		int 			4
      		long			8
      	B:浮點數
      		float			4
      		double			8
      	C:字元
      		char			2
      	D:布林
      		boolean			1
      		
      	注意:
      		整數預設是int型別,浮點數預設是double。			
      		長整數要加L或者l。
      		單精度的浮點數要加F或者f。
    

資料型別轉換

  •   (1)boolean型別不參與轉換
      (2)預設轉換
      	A:從小到大
      	B:byte,short,char -- int -- long -- float -- double
      	C:byte,short,char之間不相互轉換,直接轉成int型別參與運算。
      (3)強制轉換
      	A:從大到小
      	B:可能會有精度的損失,一般不建議這樣使用。
      	C:格式:
      		目標資料型別 變數名 = (目標資料型別) (被轉換的資料);
      (4)思考題和麵試題:
      	A:下面兩種方式有區別嗎?
      		float f1 = 12.345f;
      		float f2 = (float)12.345;
      	B:下面的程式有問題嗎,如果有,在哪裡呢?
      		byte b1 = 3;
      		byte b2 = 4;
      		byte b3 = b1 + b2;
      		byte b4 = 3 + 4;
      	C:下面的操作結果是什麼呢?
      		byte b = (byte)130;
      	D:字元參與運算
      		是查詢ASCII裡面的值
      		'a'		97
      		'A'		65
      		'0'		48			
      		System.out.println('a');
      		System.out.println('a' + 1);
      	E:字串參與運算
      		這裡其實是字串的連線			
      		System.out.println("hello"+'a'+1);
      		System.out.println('a'+1+"hello");
      		System.out.println("5+5="+5+5);
      		System.out.println(5+5+"=5+5");
    

異或運算子

  •   	swap資料的三種方式:
      	第一種:
      		int temp;
      		temp = a;
      		a = b;
      		b = temp;
      	第二種:
      		a = a ^ b;
      		b = a ^ b;
      		a = a ^ b;
      	第三種:
      		a = a + b;
      		b = a - b;
      		a = a - b;
    

switch條件表示式資料型別

  •   資料型別在1.5和1.7版本之後增加了string等資料型別,目前幾乎支援所有的資料型別。	
    

二維陣列

  •   二維陣列: 第二維陣列可以不用給出個數,只需要給出第一維的即可。
      第一種:
      	DataType ArrayName[][] = new DataType[m][n];
      第二種:
      	DataType[][] ArratName = new DataType[m][n];
      第三種:
      	DataType[] ArrayName[] = new DataType[m][n];
      第四種:
      	DataType[][] ArratName = {{...}{...}{...}};
    

函式中引數傳遞

  •   Java中的引數傳遞只有值傳遞。
      基本型別:形式引數的改變不影響實際引數;
      引用型別:形式引數的改變會影響實際引數,陣列屬於引用型別。
    

Java程式的開發,設計和特徵

  •   開發:就是不斷的建立物件,通過物件呼叫功能;
      設計:管理與維護物件之間的關係;
      特徵:封裝 繼承 多型。
    

成員與區域性變數

  •   (1)在類中的位置不同:
      	成員變數:類中方法外;
      	區域性變數:方法定義中或者方法宣告上。
      (2)在記憶體中位置不同:
      	成員變數:在堆記憶體中;
      	區域性變數:在棧中。
      (3)生命週期不同:
      	成員變數:隨著物件的建立而存在,隨著物件的消失而消失。
      	區域性變數:隨著方法的呼叫而存在,隨著方法呼叫完成而結束。
      (4)初始化值不同:
      	成員變數:有預設值;
      	區域性變數:沒有預設值,需要定義。
    

類作為形式引數:

  •   可以理解為需要一個該類的資料型別,而類是抽象的概念,也就是說本質是需要該類的一個物件例項。
    

匿名物件

  •   在需要僅僅使用一次的時候,可以建立一個無名稱的物件。eg:new studentDemo().(new student()).show().
    

封裝

  •   (1)隱藏具體的實現細節,提供公共的方法。
      (2)提高程式碼的複用性,安全性。
      (3)設計原則:隱藏具體的實現細節,提供公共的訪問方法。
      (4)private是封裝的一種表現形式。
    

this

  •   代表當前類的引用物件,哪個物件呼叫方法,該方法內部的this就代表那個物件。
    

構造方法

  •   (1)用於物件資料的初始化。
      (2)方法名與類名相同;沒有返回值,連void也沒有;但可以寫為return。任何的void返回型別都可以寫作return;
    

static特性

  • 可以修飾成員變數和成員方法

  • 被類的所有物件共享,可以通過類名呼叫, for example:

      class student{
      	public static String name = "Tom";
      }
      	tudent s = new student();
      	s.name = "sam";
      	System.out.println(s.name);
      	student ss = new student();
      	System.out.println(ss.name);
      	System.out.println(student.name);
      	
      console Output:
      	sam
      	sam
      	sam
    
  • 靜態注意:

      	在靜態方法中沒有this物件。
      	靜態只能訪問靜態。
    
  • 靜態變數與成員變數的區別:

    • 所屬不同:
      靜態變數:屬於類,類變數。
      成員變數:屬於物件。需要例項。
    • 記憶體位置:
      靜態變數:方法區的靜態區。
      成員變數:堆記憶體。
    • 生命週期:
      靜態變數:隨著類的載入而載入,隨著類的消失而消失。
      成員變數:隨著物件的建立而存在,隨著物件的消失而消失。
    • 呼叫不同:
      靜態變數:可以通過物件名也可以通過類名呼叫。
      成員變數:只能通過物件名稱呼叫。
    • main方法靜態:
      public:許可權修飾符,在jvm中的許可權最大。
      static:不需要建立物件即可呼叫。
      void:返回到jvm,是沒有意義的。
      main:普通的函式名,一般作為程式的入口。
      String[] args:可以接受資料,提高程式的靈活性,如:java test JVM