JAVA培訓(一)ppt.ppt_第1頁
JAVA培訓(一)ppt.ppt_第2頁
JAVA培訓(一)ppt.ppt_第3頁
JAVA培訓(一)ppt.ppt_第4頁
JAVA培訓(一)ppt.ppt_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、1,Java科園-顏詩超,2,自我介紹,架構師、產(chǎn)品經(jīng)理 東軟、Tieto、平安科技 現(xiàn)在創(chuàng)業(yè)中(小豹科技),3,課程整體內(nèi)容,1.基礎java(面向?qū)ο?、語法、java基礎類庫、內(nèi)存管理) 2課時 2.高級java(多線程、socket、NIO、編程規(guī)范) 2課時 3.java WEB開發(fā) (servlet、spring、spring mvc、mybatis、事務、quartz、前后端驗證、poi、maven、jenkins等) 6課時 4.java調(diào)優(yōu)與問題診斷(調(diào)試、問題定位、性能調(diào)優(yōu)) 2課時 5.centos和tomcat服務器與高可用等 (java web應用的部署環(huán)境centos

2、、tomcat等服務器及高可用環(huán)境haproxy、keepalived的使用) 2課時 6.基于java的架構設計(針對示例項目的架構設計 -基于功能性需求、非功能需求做出適合此項目的架構設計) 2課時,4,語言基礎 面向?qū)ο?基礎類庫 java的內(nèi)存管理,5,1 語言基礎,6,1 語言基礎,本章是講述java語言的基礎語法。 課程內(nèi)容: 1.1 Java語言入門 1.2 標識符、關鍵字和數(shù)據(jù)類型 1.3 運算符,表達式和語句 1.4 數(shù)組 1.5 方法的封裝,7,1.1.1 Java特點,簡單 面向?qū)ο?與平臺無關 健壯性(Java的強類型機制、異常處理、內(nèi)存的自動收集等),8,1.1.2

3、Java程序開發(fā)基本過程,Java編程基礎 Java的基本語法格式: 所有的java程序都應該寫在類中 class 類的修飾符:public和默認修飾符,public class MyFirstJavaApp public static void main(String args) System.out.println(“This is My First Java Application!”); ,9,1.1.3 Java程序開發(fā)基本過程,編譯Java程序 Javac MyFirstJavaApp.java 運行Java程序 Java MyFirstJavaApp,10,1.1.4 Java程

4、序開發(fā)基本過程,Java注釋 單行注釋 / 多行注釋 /* */ 文檔注釋 /* */,11,1.1.5 開發(fā)工具,Eclipse Intellij IDEA,12,1.2 標識符、關鍵字和數(shù)據(jù)類型,1.2.1 標識符 1.2.2 關鍵字 1.2.3 數(shù)據(jù)類型 1.2.4 常量 1.2.5 變量 1.2.6 類型轉(zhuǎn)換,13,1.2.1 標識符,標識符命名規(guī)則 定義:Java對各種變量,方法和類等要素命名時使用的字符序列稱為標識符 規(guī)則: 標識符應以字母,下劃線,美元符號開頭 標識符應以字母,下劃線,美元符號或數(shù)字組成 標識符對大小寫敏感,長度無限止 合法的標識符: Indentifier、us

5、ername、user_name、_userName、$username 非法的標識符: class、98.3、Hello World,14,1.2.2 關鍵字,注:java 無sizeof ,goto, const 關鍵字,但不能用goto const作為變量名,15,1.2.3 數(shù)據(jù)類型,16,1.2.4 常量,常量:就是持續(xù)不變的值 常量類型: 整型常量: 十進制(12) ,十六進制 (0 x12),八進制(012) 長整型常量: 13L 浮點數(shù)常量: (1) 單精度浮點數(shù) 5.1f,.4f ,2e3f ,0f (2) 雙精度浮點數(shù) 5.1,.4,2e-3,0d 布爾常量: true和f

6、alse,17,1.2.4 常量,字符常量 : a , 8, u0027 r表示接受鍵盤輸入,相當于按下了回車鍵; n是換行; t是制表符,相當于table鍵; b是退格鍵,相當于Back Space; 是單引號,而“是雙引號; 是一個斜杠“”。 字符串常量 : “Hello World“,”123”, Welcome nXXX“ null常量 : null常量只有一個值,用null表示,表示對象的引用為空,18,1.2.5 變量,變量概念 變量就是系統(tǒng)為程序分配的一塊內(nèi)存單元,用來存儲各種類型的數(shù)據(jù)。先聲明,再使用 變量的元素 變量名,變量值,變量的作用范圍 變量定義 int x=0,y;

7、y=x+3; x和y就是變量,19,1.2.5 變量,變量字節(jié)大小及有效取值范圍 byte占用一個字節(jié),數(shù)字大小為-2727-1 short占用兩個字節(jié),數(shù)字大小為-215215-1 int占用四個字節(jié),數(shù)字大小為-231231-1 long占用八個字節(jié),數(shù)字大小為-263263-1 float占用四個字節(jié),數(shù)字大小為1.4E-453.4E+38 , -1.4E-45-3.4E+38 。用二進制的指數(shù)形式表示一個浮點數(shù)的格式,如:101*22 , 101*2-3 double占用八個字節(jié),數(shù)字大小為4.9E-3241.7E+308, -4.9E-324-1.7E+308 。 char占兩個字節(jié)

8、,數(shù)字大小為0216-1,是unicode編碼。字符的本來面目,我們?yōu)槭裁纯梢灾苯訉⒁粋€數(shù)字賦給字符變量。 Boolean占一個字節(jié),有兩種取值,true和false。,20,1.2.5 變量,變量作用域 變量要先定義,后使用,但不是在變量定義后的語句中一直都能使用前面定義的變量。比如:可以用大括號將多個語句包起來形成一個復合語句,則復合語句中定義的變量只能在定義它的復合語句中使用。 局部變量 在方法或方法中的代碼塊中定義的變量稱為局部變量 成員變量 在方法外,在類內(nèi)部定義的變量,21,1.2.5 變量,局部變量的定義 在方法或方法中的代碼塊中定義的變量稱為局部變量,局部變量在方法或代碼塊被執(zhí)

9、行時創(chuàng)建,在方法或代碼塊結束時被銷毀。 局部變量的初始化 局部變量在進行取值操作前必須被初始化,否則會出現(xiàn)編譯錯誤,22,1.2.6 類型轉(zhuǎn)換,自動類型轉(zhuǎn)換(也叫隱式類型轉(zhuǎn)換) byte b = 3; int x = b; /b被自動轉(zhuǎn)換為int型 強制類型轉(zhuǎn)換(也叫顯式類型轉(zhuǎn)換) byte a; int b; a = (byte)b; /b被強制轉(zhuǎn)換為byte型,23,1.3 運算符,表達式和語句,1.3.1 運算符 1.3.2 表達式 1.3.3 控制語句,24,1.3.1 運算符,何為運算符 運算符是一種特殊符號,用以表示數(shù)據(jù)的運算、賦值和比較,一般由一至三個字符組成 。 運算符類型 算

10、術運算符 賦值運算符 比較運算符 邏輯運算符 位運算符 移位運算符,25,1.3.1 運算符,26,1.3.1 運算符,算術運算符的注意問題 “+”除字符串相加功能外,還能把非字符串轉(zhuǎn)換成字符串 ,如: “x”+123;的結果是“x123” 。 如果對負數(shù)取模,可以把模數(shù)負號忽略不記,如:5%-2=1。但被模數(shù)是負數(shù)就另當別論了。 對于除號“/”,它的整數(shù)除和小數(shù)除是有區(qū)別的:整數(shù)之間做除法時,只保留整數(shù)部分而舍棄小數(shù)部分。 int x=3510;x=x/1000*1000;實際運行結果是3000 ,想想為什么?,27,1.3.1 運算符,賦值運算符,28,1.3.1 運算符,賦值運算符注意:

11、 注1:在JAVA里可以把賦值語句連在一起,如: x = y = z = 5 ; 在這個語句中,所有三個變量都得到同樣的值5。 注2 :x += 3等效于x = x + 3,等于*= ,-=,/=依此類推。,29,1.3.1 運算符,比較運算符,30,1.3.1 運算符,比較運算符注意: 注1:比較運算符的結果都是boolean型,也就是要么是true,要么是false。 注2:比較運算符“=”不能誤寫成“=”,31,1.3.1 運算符,邏輯運算符,32,1.3.1 運算符,邏輯運算符注意點 注1:邏輯運算符用于對boolean型結果的表達式進行運算,運算的結果都是boolean型 。 注2:

12、“ b+5; a10 case 常量2: 語句 break; default: 語句 break; ,42,1.3.3控制語句,switch選擇語句: switch(x)/x只能為int、byte、char、short case 1:System.out.println(“Monday”); break; case 2:System.out.println(“Tuesday”); break; case 3:System.out.println(“Wednesday”);break; default:System.out.println(“I dont know”); 思考:無break的情況

13、,43,1.3.3控制語句,for循環(huán)語句 for(初始化表達式;布爾值測試表達式;更改表達式) 語句或語句塊; 例:for(int i=0;i=10;i+) System.out.println(“i=”+i); ,44,1.3.3控制語句,while循環(huán) while(布爾值) 語句或語句塊; 注意:while表達式的括號后不能加“;”,否則會 造成不易察覺的無限循環(huán),45,1.3.3控制語句,do while循環(huán) do 語句或語句塊; while(布爾測試) 注意:while表達式的括號后要加“;”,46,1.3.3控制語句,思考:while循環(huán)和do while循環(huán)的不同之處 while

14、循環(huán)先判斷循環(huán)條件,再執(zhí)行循環(huán)體 do while循環(huán)先執(zhí)行循環(huán)體,再判斷循環(huán)條件,47,1.3.3控制語句,break與continue語句 break:終止循環(huán)體中的執(zhí)行語句和switch語句,跳轉(zhuǎn)到當前循環(huán)的下一條語句 continue:只能用于while、do while、for語句中,終止當前這次循環(huán),執(zhí)行下一次循環(huán),48,1.3.3控制語句,特殊的循環(huán)流程控制 break語句 do 語句; If(條件為真) break; 語句 while(布爾表達式);,49,1.3.3控制語句,特殊的循環(huán)流程控制 continue語句 do 語句; If(條件為真) continue; 語句 w

15、hile(布爾表達式);,50,1.4數(shù)組,1.4.1 聲明數(shù)組 1.4.2 創(chuàng)建數(shù)組 1.4.3 數(shù)組初始化 1.4.4 數(shù)組中注意的問題 1.4.5 多維數(shù)組,51,1.4.1聲明數(shù)組,聲明數(shù)組:數(shù)組類型 數(shù)組名 Int aa Int aa,52,1.4.2創(chuàng)建數(shù)組,創(chuàng)建數(shù)組: 數(shù)組名=new 類型名數(shù)組大小 aa = new int10; 數(shù)組元素: aa0、aa1、aa2aa9,53,1.4.3數(shù)組初始化,int ia =1,2,3,4; int ia=new int3,4,5; int a5;/聲明數(shù)組時,不能指定其長度,編譯時將出錯,54,1.4.4數(shù)組中注意的問題,空指針異常(數(shù)

16、組未初始化就使用數(shù)組中的元素) 數(shù)組越界異常 如何得到數(shù)組長度 所有的數(shù)組的索引均從0開始,55,1.4.4數(shù)組中注意的問題,不能改變數(shù)組大小 可以使用相同的引用變量去引用另一個全新的數(shù)組,56,1.4.5多維數(shù)組,多維數(shù)組,類似棋盤。 Java 中的多維數(shù)組,也就是數(shù)組的數(shù)組,,57,1.4.5多維數(shù)組,定義多維數(shù)組 int xx; xx=new int3; xx0=new int3; xx1=new int2;,58,1.4.5多維數(shù)組,多維數(shù)組中元素的引用方式,如:x12。 規(guī)則矩陣數(shù)組可以在一條語句中產(chǎn)生,如:int xx=new int23; 多維數(shù)組的靜態(tài)初始化 ,如: int x

17、x=3,2,7,1,5,6;,59,1.5方法的封裝(功能的封裝),1.5.1 方法的封裝格式 1.5.2 方法調(diào)用的過程分析 1.5.3 方法的調(diào)用 1.5.4 方法的參數(shù)傳遞,60,1.5.1方法的封裝格式,返回值類型 函數(shù)名(參數(shù)類型 形式參數(shù)1,參數(shù)類型 形式參數(shù)2,.) 程序代碼 return 返回值; 形式參數(shù):在方法被調(diào)用時用于接收外部傳入的數(shù)據(jù)的變量。 參數(shù)類型:就是該形式參數(shù)的數(shù)據(jù)類型。 返回值:方法在執(zhí)行完畢后返還給調(diào)用它的程序的數(shù)據(jù)。 返回值類型:函數(shù)要返回的結果的數(shù)據(jù)類型。 實參:調(diào)用函數(shù)時實際傳給函數(shù)形式參數(shù)的數(shù)據(jù)。 如何理解函數(shù)返回值類型為void的情況,61,1.

18、5.2方法調(diào)用的過程分析,62,1.5.3方法的參數(shù)傳遞,方法的形式參數(shù)相當于方法中定義的局部變量 方法的形式參數(shù)在方法調(diào)用結束時被釋放,不會影響到主程序中同名的局部變量,63,1.5.4方法的參數(shù)傳遞,class PassRef int x; public static void main(String args) PassRef obj = new PassRef(); obj.x = 5; change(obj); System.out.println(obj.x); public static void change(PassRef obj) obj.x = 3;,64,小結,1.1

19、Java語言入門 1.2 標識符、關鍵字和數(shù)據(jù)類型 1.3 運算符,表達式和語句 1.4 數(shù)組 1.5 方法的封裝,65,2面向?qū)ο?66,面向?qū)ο?vs. 面向過程,面向?qū)ο螅∣OP)Object-Oriented Programming 用類class封裝數(shù)據(jù)以及與數(shù)據(jù)相關的操作 用類的繼承性來實現(xiàn)類的重用性 多態(tài)性 面向“對象”,由對象提供服務 面向過程(POP)Procedure-Oriented Programming 以功能為組織單元 通過數(shù)據(jù)結構來描述具體的問題 數(shù)據(jù)在功能(函數(shù))之間以參數(shù)的形式被傳送,67,現(xiàn)實世界中的對象,現(xiàn)實世界是由對象構成的 現(xiàn)實世界中任何實體都可以看作

20、是對象 現(xiàn)實世界中的對象有兩個共同特征: 狀態(tài) 行為,68,封裝(Encapsulation),封裝性體現(xiàn)了面向?qū)ο蟪绦蛟O計的一個特性,將方法和數(shù)據(jù)組織在一起,隱藏其具體實現(xiàn)而對外體現(xiàn)出公共的接口 模塊化 隱藏信息,69,繼承(Inheritance),廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特性,而不必重復定義它們。在面向?qū)ο蟮能浖夹g中,繼承是子類自動地共享父類中定義的數(shù)據(jù)和方法的機制。,70,單重繼承與多重繼承,單重繼承:一個子類只有一個唯一確定的父類 單重繼承所構成的類的關系結構是一棵樹 多重繼承:一個子類可以有多個不同的父類 多重繼承所構成的類的關系結構是一個格 Java語言僅支持

21、單重繼承,71,接口(Interface),接口和類一樣也是一種類型,也同樣包含一些方法的定義。但與類不同的是:接口中所定義的所有方法都是抽象方法(即沒有實現(xiàn)的方法)。 接口中所定義的方法由實現(xiàn)(implement)該接口的類來實現(xiàn),一個類可以同時實現(xiàn)多個接口 接口機制使Java的面向?qū)ο缶幊套兊酶屿`活。解決了單重繼承帶來的問題 接口定義了對象的行為模型,相當于一個協(xié)議。實現(xiàn)接口的各個類負責實現(xiàn)接口所定義的行為。雖然實現(xiàn)細節(jié)各不相同,但對用戶來說是一樣的行為。,72,面向?qū)ο蟮氖纠?本例中包含很多對象:點、窗口、顏色、點擊事件,73,Spot類,public class Spot /inst

22、ance variables private int size; public int x, y; /constructor public Spot() x = -1; y = -1; size = 1; /methods for access to the size instance variable public void setSize(int newSize) if (newSize = 0) size = newSize; public int getSize() return size; ,74,Spot對象實例,private Spot spot = null; . spot =

23、 new Spot(); spot.setSite(1);,75,示例中的繼承和接口,public class ClickMe extends JComponent implements MouseListener . ,public class ClickMe extends JComponent implements MouseListener . /Methods required by the MouseListener interface. public void mousePressed(MouseEvent event) if (spot = null) spot = new S

24、pot(); spot.setSize(RADIUS); spot.x = event.getX(); spot.y = event.getY(); repaint(); public void mouseClicked(MouseEvent event) public void mouseReleased(MouseEvent event) public void mouseEntered(MouseEvent event) public void mouseExited(MouseEvent event) ,76,多態(tài),TestPolymoph/Test.java 多態(tài)是指在執(zhí)行期間(而非

25、編譯期)判斷所引用對象的實際類型,根據(jù)其實際的類型調(diào)用其相應的方法。 上面例子中,根據(jù)Lady對象的成員變量Pet所引用的不同的實際類型而調(diào)用相應的enjoy方法。,class Bird extends Animal private String featherColor; Bird(String n,String f) super(n); this.featherColor = f; public void enjoy() System.out.println(鳥叫聲.); public class Test public static void main(String args) Bird

26、 b = new Bird(“birdname”,”green”); Lady l3 = new Lady(l3,b); l3.myPetEnjoy(); ,1.要有繼承 2.要有重寫 3.父類引用指向子類對象,77,3 重點類庫,78,為什么java很流行?豐富的類庫是很重要的因素。,79,java常用的包介紹,java.lang java的核心類基本類,如:String,Integer,System,Runtime等。 java.io 輸入輸出的類 網(wǎng)絡連接相關的類 java.nio jdk1.4后出現(xiàn)的新的io包,更高的效率。 java.util 一些工具類,如數(shù)據(jù)結構相關的類。 jav

27、a.lang.reflect 反射相關的類。 java.security 安全相關的類。 更多請參考jdk 文檔。,80,字符和字符串,Java API提供了四個處理字符數(shù)據(jù)的類: Character:這個類的實例可以容納單一的字符數(shù)值。該類還定義了一些簡潔的方法來操作或者檢查單一字符數(shù)據(jù)。 String:這個類用于處理由多個字符組成的不可變數(shù)據(jù)。 StringBuffer:這個類用于存儲和操作由多個字符組成的可變數(shù)據(jù)。線程安全。 StringBuilder 非線程安全的StringBuffer,效率更高,81,異常類,在Java中,將異常情況分為Exception(異常)和Error(錯誤)

28、兩大類。 Error 類對象由 Java 虛擬機生成并拋出;Exception 類對象由應用程序處理或拋出。,異常類的繼承結構,82,checked異常與unchecked異常,RuntimeException類及其子類被稱為“運行時異?!?一般發(fā)生在JRE內(nèi)部 也稱“非必檢異?!?如NullPointerException 其他異常被成為“非運行時異?!?一般發(fā)生在JRE外部 也稱“必檢異?!?如IOException,83,異常處理的一般步驟,異常拋出 異常捕獲 異常處理,try 拋出異常的代碼 catch (某Exception類型 e) 處理該異常類型的代碼 catch (某Excep

29、tion類型 e) 處理該異常類型的代碼 finally ,84,Io包,85,Reader與Writer類,Reader類的相關方法: void close() void mark(int readAheadLimit) boolean markSupported() int read() int read(char cbuf) int read(char cbuf, int off, int len) boolean ready() void reset() long skip(long n) Writer類的相關方法: void close() void flush() void wri

30、te(char cbuf) void write(char cbuf, int off, int len) void write(int c) void write(String str) void write(String str, int off, int len),86,流的使用(1),87,流的使用(2),88,流的使用(3),89,Serializable接口,并非所有對象都是可串行化的,如果要對某對象進行串行化,該對象的類必須實現(xiàn)Serializable接口 Serializable接口是一個空接口,也就是說,它不包含任何方法的聲明,該接口的作用只是表明這個類的對象可以被串行化,9

31、0,數(shù)據(jù)結構類,91,集合框架中的接口,Collection:集合層次中的根接口,JDK沒有提供這個接口直接的實現(xiàn)類。 Set:不能包含重復的元素。SortedSet是一個按照升序排列元素的Set。 List:是一個有序的集合,可以包含重復的元素。提供了按索引訪問的方式。 Map:包含了key-value對。Map不能包含重復的key。SortedMap是一個按照升序排列key的Map。,92,集合框架中的實現(xiàn)類,SortedSet,Set,List,Map,HashSet,LinkedHashSet,TreeSet,ArrayList,LinkedList,SortedMap,HashMap

32、,TreeMap,93,ArrayList,ArrayList:我們可以將其看作是能夠自動增長容量的數(shù)組。,94,ArrayList,向ArrayList對象中添加任何對象 使用size()方法打印所有對象 直接輸出一個ArrayList對象 自定義類應該重寫toString()方法以便輸出時被自動調(diào)用 使用toArray()方法轉(zhuǎn)換為對象數(shù)組 使用Arrays.asList(Object o)返回一個列表 返回的列表的大小固定,不能添加元素,可以使用set()方法修改節(jié)點的元素,否則會拋出不支持的操作異常(UnsupportedOperationException ) 。,95,ArrayL

33、ist,迭代器(Iterator) 給我們提供了一種通用的方式來訪問集合中的元素。 remove()方法是一個可選的操作,實現(xiàn)Iterator接口可以選擇實現(xiàn)該方法,或做空實現(xiàn)并拋出不支持的操作異常(UnsupportedOperationException ),類庫采用這種方式避免產(chǎn)生太多的接口,否則會增加學習的難度。,96,迭代器的工作原理,返回的元素,刪除的元素,next(),remove(),next(),97,Collections類,排序:Collections.sort() (1)自然排序(natural ordering ); (2)實現(xiàn)比較器(Comparator)接口。 取

34、最大和最小的元素:Collections.max()、Collections.min()。 在已排序的List中搜索指定的元素:Collectons.binarySearch()。,98,LinkedList,LinkedList是采用雙向循環(huán)鏈表實現(xiàn)的。 利用LinkedList實現(xiàn)棧(stack)、隊列(queue)、雙向隊列(double-ended queue )。,99,數(shù)據(jù)結構,一般將數(shù)據(jù)結構分為兩大類:線性數(shù)據(jù)結構和非線性數(shù)據(jù)結構。線性數(shù)據(jù)結構有線性表、棧、隊列、串、數(shù)組和文件;非線性數(shù)據(jù)結構有樹和圖。,100,棧,棧(Stack)也是一種特殊的線性表,是一種后進先出(LIFO)的結構。 棧是限定僅在表尾進行插入和刪除運算的線性表,表尾稱為棧頂(top),表頭稱為棧底(bottom)。 棧的物理存儲可以用順序存儲結構,也可以用鏈式存儲結構。,a1,a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論