java培訓(1-4節課)

賈樹丙發表於2013-11-08

課程安排:JavaEE方向(控制檯程式,GUI程式,Web程式,手機程式)(dos命令是控制檯程式;QQ是GUI程式,放在計算機上;QQ空間是Web程式,放在騰訊公司)

講課的13本教材:C語言,Java核心技術上,Java核心技術下,物件導向的分析與設計,Oracle資料庫,軟體測設自動化,Web程式設計基礎,Web程式設計,XML,Linux,Struts2,Hibernate,Spring。

獨立講解的:Java核心技術上,Java核心技術下,Oracle資料庫,Web程式設計基礎,Web程式設計,Struts2,Hibernate,Spring。
其餘的內容在3個階段都會涉及。

第一階段:控制檯程式,GUI程式(基礎)(C語言,Java核心技術上,Java核心技術下,物件導向的分析與設計,Oracle資料庫,軟體測設自動化)
第二階段:Web程式(應用)(Web程式設計基礎,Web程式設計,XML,物件導向的分析與設計,Oracle資料庫,軟體測設自動化)
第三階段:Web程式(應用)(Struts2,Hibernate,Spring,Web程式設計基礎,Web程式設計,XML,物件導向的分析與設計,Oracle資料庫,軟體測設自動化)


學習思路:
1.程式設計內功:(程式碼量,程式結構,程式執行原理)
2.程式設計外功:(程式碼編寫,程式框架應用,函式的使用,呼叫,類的使用。printf("%d-%d",1,2);)

Java程式開發環境(安裝過程):(作業系統檔案路徑的查詢規則:先在當前路徑下查詢是否存在需要執行的檔案,如果存在直接執行,否則去環境變數path所設定的路徑中查詢檔案。)
1.安裝JDK:Java語言執行環境(執行Java程式)。
1.安裝JDK程式(安裝版,解壓版)。
2.設定JDK的環境變數(為作業系統設定變數)。
JAVA_HOME:設定JDK的安裝路徑,目的為其它程式若要使用JDK,提供一個JDK的訪問路徑。
PATH:設定JDK的bin的路徑,為呼叫執行JDK的命令和程式提供一個簡便的方式。
CLASSPATH:在執行class檔案時,查詢class檔案的路徑(預設值為當前路徑,如果手動設定CLASSPATH,那麼預設值將失效。如果還需使用預設值,需要加入"."設定)。

 


 

Java的執行方式:
程式的執行方式:編譯或解釋。
編譯方式:原始碼------------------->目的碼---->執行程式
           C,Java,C#       編譯             機器語言
解釋方式:原始碼---->執行程式
                       翻譯

C語言:.c--->.obj--->.exe(直接執行EXE檔案)
    編譯    連線
Java語言:.java----->.class------->Java虛擬機器
       編譯     位元組碼   解釋

工具——資料夾選項——檢視——隱藏檔案型別和副檔名

Java語言是介於編譯型和解釋型之間的一門語言,比C的執行效率低,比vb執行效率高。

Java語言是跨平臺的語言(作業系統):JDK執行環境有不同作業系統版本
C#語言是跨平臺的語言(語言):

Java的語法規則:
1.字符集:ASCII
2.識別符號,關鍵字。
3.變數和常量:
常量:不能改變的資料(晶片或檔案中)。
變數:可以改變的資料(記憶體)。
變數和常量都是用來表示程式中的資料,常量是變數中的值。
int a=0;a=1;
資料結構:變數的儲存結構,如何完成設計一個比較複雜的資料結構(變數與變數之間的關係);
變數的資料型別。

建立專案之後,資料夾(bin,src)——右鍵src,新建類  —— 包名com.guigu.macheng,main   如果開啟已有class 右鍵——匯入

java的字元可以存放一個漢字


資料型別:
基本資料型別:數值,字元(兩個位元組),布林(true,false),byte。
複合資料型別:陣列,類,集合,字串等。

作業系統管理記憶體的方式(JDK執行環境);
  每執行一次程式,系統就會為程式的執行開闢一大塊記憶體空間,這塊記憶體空間只供這個程式所使用,一般情況下其它程式無法訪問這個記憶體空間的(除非使用C語言的指標實現訪問其它程式的記憶體空間)。至於這塊記憶體空間多大,在那開闢是有作業系統決定的。
  對於這塊記憶體空間,我們可以將其分為4部分:全域性資料區(靜態區)、棧區,堆區,程式碼區。

  • 全域性資料區(靜態區):程式執行就立刻佔用的記憶體空間,直到程式執行結束記憶體空間才會被釋放(編譯時處理)。
  • 棧區:當程式執行到某行程式碼時,開闢記憶體空間。當程式執行到距離該變數建立程式碼最近的"}"時,釋放(編譯時處理)。
  • 堆區:在需要時建立,不需要時釋放(由開發人員自行控制)。
  • 程式碼區:儲存程式執行時。的相關程式碼。

變數的特性:生命週期,作用域,可見性。
  生命週期:記憶體空間合適建立何時釋放。
  作用域:在程式執行的哪個範圍記憶體空間可以訪問。
  可見性:同名兩個變數,且其作用域範圍存在交集時。

 


Java開闢記憶體空間的規則:

  • 全域性資料區(靜態區):字串常量(相同的字串常量,不論在程式中出現多少次,在全域性資料區中只建立一個值),靜態變數。
  • 棧區:在函式內部建立的變數(區域性變數)。包括所有的基本資料型別變數引用型別變數(C語言的指標變數)。
  • 堆區:通過new開闢的記憶體空間。


變數的儲存型別:
值型別:變數的記憶體空間儲存的是資料(基本資料型別)。
引用型別:變數的記憶體空間儲存的是記憶體地址(複合資料型別)。

int a=1,b=0;a,b儲存的是值,屬於值型別;    String s1=new String("king"),s1儲存的是地址,屬於引用型別,都儲存在棧區

java中 if(s1==s2)判斷地址,c,c#中因為存在運算子過載的概念 ,所以 if(s1==s2)判斷的是字串

類和物件:
C語言結構體:結構體就是一個資料型別,通過結構體資料型別建立結構體變數。
Java語言中:類就是資料型別,物件就是這個類資料型別建立的一個變數。

Scanner介面(滑鼠、鍵盤)支援獲取資料,雙擊字串 選中串,雙擊class,最大/小化

 


 

int a=1,b=1 則a!=b,因為在記憶體中,他們儲存的是值

String s1="king",s2="king" 則s1==s2,他們儲存的是常量king

String s1=new String("king") ,s2=new String("king"),則s1!=s2,因為他們在記憶體中儲存的是堆中兩個“king”的地址

 

Scanner鍵盤輸入,在記憶體中存放在堆中,輸入的字串先在堆中建立物件,再傳遞給棧區地址;但是輸入的數字直接傳給棧區,Scanner是堆區物件,sc用來存放地址

Scanner sc=new Scanner(System.in);

String s1="king"; String s2=null; s2=sc.next(); int x=sc.nextInt();

 

空指標異常:java.lang.Null PointerException 只建立了棧區名字,空指標,未建立堆內物件

比如 Student s1=null; s1.name=sc.next(); Student是類

Student[] ss = new Student [3];
Student s1=new Student();
for(int i=0; i<ss.length; i++)
{
  s1.name = sc.next();
  ss[i] = s1;
}
for(i->0-length)
  System.out.println(ss[i].name);

輸入三次不一樣的名字,輸出的卻是相同的最後一次輸入的名字,原因是隻開闢了一個物件,只把改地址賦值了陣列,將“Student s1=new Student()”加入第一個迴圈就對了

 

 

相關文章