




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、序本視頻假定讀者已經掌握了C語言!所以有關變量,數據類型,運算符, 流程控制,函數,指針等知識本視頻中是沒有講的,因為這些知識我已經在C語言中講過了C語言視頻我暫時還沒有錄制, 沒有C語言基礎的同學看本Java視頻會有不小的難度!當然如果你已經學習了其他語言,掌握了有關變量,數據類型,運算符, 流程控制,函數,指針等知識,看此視頻應該沒什么難度吧!沒有學過C語言的推薦看譚浩強先生的書籍!本人的qq只希望接受您對我視頻教學錯誤的指正,對于您學習中出現的問題,對不起,我沒有時間通過qq來幫您解決!實在是抱歉! 2009年7月17日郝斌注意:本資源郝斌Java自學視頻教程共107集郝斌,現在瑞德學校
2、擔任教學組長,曾在雅博等公司擔任項目總監。6年開發經驗,擅長C/C+ 、Java、 數據結構、數據庫。具有四年培訓經驗。郝斌:自學好辛苦, 不過好在最后我還是學出來了, 教學好幾年了, 感觸頗多, 如今錄制了一些教學視頻, 把自己的心得發布出來, 希望對那些沒錢培訓的朋友有所幫助視頻目錄1_Java概述_1 2_Java概述_2 3_Java概述_3 4_Java的卸載 5_Java的安裝 6_環境變量的設置 7_常見dos命令 文件名和類名不同時編譯運行的問題 9_復習上節課 10_類和對象 8_ 變量命名規則 數據類型 運算符 格式化輸出 流程控制 11_內存分配 12_訪問控制符_1 1
3、3_訪問控制符_2 14_構造函數 15_UltraEdit的使用 16_復習 17_函數的重載 18_構造函數 19_this 20_static 21_復習 22_static兩示例_求個數_只生成一個對象_1 23_static兩示例_求個數_只生成一個對象_2 24_繼承的由來 和 繼承的訪問控制權限_1 25_繼承的由來 和 繼承的訪問控制權限_2 26_面向對象的繼承反映的是現實中的一般到特殊的關系 27_Java為什么沒有多繼承 28_復習+super_1 29_復習+super_2 30_重寫父類方法_1 31_重寫方法示例 32_多態的語法知識 33_復習 34_多態注意事項
4、和 實際應用示例 36_接口_1 35_抽象類 和 final 37_接口_2 38_面向對象復習 39_編譯運行含有包層的類_1 40_編譯運行含有包層的類_2 41_同包和不同包類的相互訪問 42_復習 和 不同包之間的相互訪問_1 43_復習 和 不同包之間的相互訪問_2 44_jar包的生成 45_如何使用Jar包 和 包的總回顧 46_異常概述_1 47_異常概述_2 48_復習 49_為什么需要異常 50_printStackTrace方法的介紹 51_ 可處理可不處理的異常 和 必須得進行處理的異常 52_處理異常的兩種方式 53_finally 54_ 自定義異常 和 thro
5、ws常見錯誤解析_1 55_ 自定義異常 和 throws常見錯誤解析_2 56_異常復習 57_異常 58_ToString()方法介紹_1 59_ToString()方法介紹_2 60_equals_1 61_equals_2 62_復習 63_String類的 equals=常量字符串的用法 64_String類的常用方法介紹 字符串和整數的相互轉化 67_復習 65_String常用方法舉例 66_printf和println的區別 68_StringBuffer 69_數組 70_線程_1 71_復習 72_創建線程的第二種方式 73_線程常用方法的介紹 java自學視頻 源代碼 7
6、4_線程的控制 75_線程同步問題的產生原因 76_復習 78_閑聊 79_復習 77_買票程序講解 80_生產消費程序演示_1 82_awt展望 81_生產消費程序演示_2 84_布局管理器 86_復習 83_gui 85_事件處理 87_十個按鈕的設計 90_計算器 可運行jar包的生成 89_復習 內部類 匿名類 92_復習 91_什么叫流 流的分類 四大基本抽象流 88_三個文本框的相加運算示例 93字節流 字符流的使用和它們的區別 94_緩沖流的使用 95_將一個長整型數寫入字節數組再從字節數組讀出程序講解96_print流 Object流 97_容器的介紹和使用 99_ 復習 98
7、_Comparable 接口 Set接口 101_Iterator接口 100_equals和hashCode方法的使用(難點) 103_泛型 102_Map接口的使用 104_網絡編程基礎知識 UDP編程 105_TCP編程 和 TCP下的WEB服務器程序的講解 106_JavaSE復習大綱_上 107_JavaSE復習大綱_下Java概述Java特點Java虛擬機(JVM)每臺計算機上都有獨特的java虛擬機;一次編譯到處運行;Java應用領域 J2SE J2ME J2EEJava基礎知識Dos命令Java中的注釋標識符關鍵字數據類型常量 整型常量、浮點常量、字符常量不同類型變量的存儲范圍
8、數據類型轉化運算符 算術運算符 關系運算符 邏輯運算符 賦值運算符 位運算符運算符的優先級流程控制 順序 選擇 循環函數的重載面向對象編程(上)面向過程的設計思想/面向對象的設計思想類的定義:靜態屬性(成員變量); 動態可執行的操作(成員方法);對象的定義程序的執行過程(執行過程的內存管理:堆棧等)內存Code segment(代碼段)存放代碼Data segment(數據段)存放靜態變量,字符串常量Stack(棧)存放對象Heap(堆)存放對象引用(一個類的new出多個對象,成員變量放在內存的不同區域,但是方法只有一個且放在代碼段)訪問控制符 public 可以通過外部訪問方式訪問類內部的p
9、ublic成員 Protect 默認 Private 不可以通過外部訪問方式訪問類內部的private成員分三個層次掌握訪問控制符:(1)、類的內部訪問在一個類的內部,所有的成員可以相互訪問,訪問控制符是透明的;訪問控制符是針對類外部訪問而言的;=類內/類外=(2)、同一個包中外部訪問(同包不同類/同包不同類-繼承)通過類的對象名訪問類的內部成員通過類名訪問類的內部成員=包內/包外=(3)、包函數調用的過程:壓棧過程構造函數構造函數的定義和作用:類創建對象構造函數的返回值問題(構造函數沒有返回值)構造函數數據成員的賦值-對象被創建時會對其中各種類型的成員變量自動初始化賦值多個構造函數可能帶來的
10、沖突(如果不定義程序就會默認提供,定義后就不再提供)關鍵字this(理解成當前對象的引用或指針)一個類的new出多個對象,成員變量放在內存的不同區域,但是方法只有一個且放在代碼段-成員方法如何區別是哪一個對象掉用自己?-每一個非靜態方法中都隱含一個this指針關鍵字static(成員屬于類)非私有靜態屬性或方法可以直接用類名訪問,類的對象也可以直接訪問;靜態方法不可以訪問非靜態成員;非靜態方法可以訪問靜態成員;Static應用:創建對象計數;單態模式-只能創建一個對象(見例子 TestStatic_2.java);面向對象編程(下)繼承(extends)(1)子類內部可以訪問父類非私有的成員;
11、(2)子類的外部(子類new出來的對象),通過子類對象名只能訪問從父類繼承過來的非私有成員(反過來父類對象訪問子類的成員同理,子類把public等修飾符也繼承過來了)(3)通過子類的類名訪問父類的成員總之-私有不能被繼承(私有成員邏輯上已經被繼承過來的,只是不能訪問,因此繼承要慎重否則浪費內存空間)不同包的繼承問題繼承原則:區別汽車和車輪的關系(包含關系)父類/基類-子類/派生類superjava只允許單繼承(C+允許多繼承)接口可以一定程度上解決單繼承的缺陷Super的使用(見TestSuper_1.java/TestSuper_2.java/TestSuper_3.java)Super的應
12、用-情景:父類有很多很多屬性,子類繼承過來如果一個個進行初始化就會太麻煩,可以使用Super調用父類的構造器進行初始化總結:1、每個子類構造方法的第一條語句,都是隱含地調用super(),如果父類沒有這種形式的構造函數,那么在編譯的時候就會報錯。2、如果顯示的寫出super();語句,則必須保證該語句是第一條語句,否則會出錯3、super();如果不寫,則編譯器會自動添加,所以此時如果父類沒有無參的構造函數就會出錯4、既可以顯示寫super();前提是父類必須有無參的構造函數也可以顯示寫super(實參); 前提是父類必須有帶參的構造函數5、調用父類的構造函數的語句必須借助于super,不能直
13、接寫父類的類名,這與C+不同,6、一個構造函數中不能寫多個super(參數列表)語句;Super.f();方法的重寫-子類要比父類的權限大(否則多態無法實現)TestStudent.java多態(一個父類的引用類型變量既可以指向父類對象也可以指向子類對象,它可以根據當前時刻指向的不同,自動調用不同對象的方法,這就是多態)多態的作用:同一段代碼做不同的事情(TestPoly_1.java)通過父類的引用只能指向子類從父類繼承過來的成員;父類的引用永遠不可能直接賦給子類的引用;只有當在父類引用本身指向的就是一個子類對象時,才可以把父類引用強制轉換為子類引用抽象類(abstract 美æb
14、strækt)的由來:比如“植物”抽象詞abstract class A abstract public void f();/沒有方法體的方法叫做抽象方法,抽象方法沒有方法體 有抽象方法的類一定是抽象類,抽象類不一定有抽象方法;可以定義一個抽象類的引用(多態抽象類),但不可以創建一個抽象類對象Final: 修飾 整個類:表示不能被繼承 成員屬性:表示屬性必須被賦值,且只能被賦值一次,通過兩種方式 成員方法:可以繼承但不可以重寫 接口interface(特殊的抽象類)抽象方法和常量屬性的集合接口和抽象類的區別:抽象類是一個類可以被繼承,接口不能被繼承只能被實現用關鍵字implement
15、s(實現)接口內的方法沒有 ,不允許有非抽象方法包:Javac -d . TestPackage.javaJava myPackage.cy.TestPackagePath: exe的路徑Classpath: class的路徑DOS命令:設置類的路徑:set classpath=c:Documents and setting.同包不同類的訪問:啟動類Javac a.java b.java 兩個一起編譯同包非私有成員都可以不同包的訪問:共有的類的共有成員才可以被另外一個包的類訪問Import公有類保證可以在另一個類中創建對象,公有方法除了內部類 普通類只能用public 或者什么都不修飾如何生成
16、jar包放在一個文件夾中DOS下 jar cvf xxx.jar *(進入當前目錄)如何使用jar包Import zhangsan.lidi.A;Set classpath=c:documents and settting.t.jar;面向對象的特點:封裝: 訪問控制符:只有private This:一個對象只含有屬性的空間 private繼承:java只允許單繼承,私有成員無法被繼承 重寫:方法名和參數列表和返回值必須一樣多態:放在java.lang包中的類不需要引入,其他的類都需要手動引入Object類的方法-toString()方法一個類默認繼承Object該方法返回“類名哈希碼-該對象
17、在內存堆中的地址”System.out.println(類的對象名)-實際輸出的是該對象的toString()方法所返回的字符串重寫toString方法的意義:為了實際需要String和StringBuffer:JAVA的StringBuffer類: StringBuffer類和String一樣,也用來代表字符串,只是由于StringBuffer的內部實現方式和String不同,所以StringBuffer在進行字符串處理時,不生成新的對象,在內存使用上要優于String類。
18、 所以在實際使用時,如果經常需要對一個字符串進行修改,例如插入、刪除等操作,使用StringBuffer要更加適合一些。 在StringBuffer類中存在很多和String類一樣的方法,這些方法在功能上和String類中的功能是完全一樣的。但是有一個最顯著的區別在于,對于StringBuffer對象的每次修改都會改變對象自身,這點是和String類最大的區別。
19、另外由于StringBuffer是線程安全的,關于線程的概念后續有專門的章節進行介紹,所以在多線程程序中也可以很方便的進行使用,但是程序的執行效率相對來說就要稍微慢一些。 1、StringBuffer對象的初始化StringBuffer對象的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構造方法進行初始化。例如: StringBuffer s = new Strin
20、gBuffer();這樣初始化出的StringBuffer對象是一個空的對象。如果需要創建帶有內容的StringBuffer對象,則可以使用: StringBuffer s = new StringBuffer(“abc”);這樣初始化出的StringBuffer對象的內容就是字符串”abc”。需要注意的是,StringBuffer和String屬于不同的類型,也不能直接進行強制類型轉換,下面的代碼都是錯誤的:
21、60; StringBuffer s = “abc”; /賦值類型不匹配 StringBuffer s = (StringBuffer)”abc”; /不存在繼承關系,無法進行強轉StringBuffer對象和String對象之間的互轉的代碼如下:
22、160; String s = “abc”; StringBuffer sb1 = new StringBuffer(“123”); StringBuffer sb2 = new StringBuffer(s); /String轉換為StringBuffer
23、60; String s1 = sb1.toString(); /StringBuffer轉換為String 2、StringBuffer的常用方法StringBuffer類中的方法主要偏重于對于字符串的變化,例如追加、插入和刪除等,這個也是StringBuffer和String類的主要區別。a、append方法
24、; public StringBuffer append(boolean b)該方法的作用是追加內容到當前StringBuffer對象的末尾,類似于字符串的連接。調用該方法以后,StringBuffer對象的內容也發生改變,例如: StringBuffer sb = new StringBuffer(“abc”);
25、60; sb.append(true); 則對象sb的值將變成”abctrue”。使用該方法進行字符串的連接,將比String更加節約內容,例如應用于數據庫SQL語句的連接,例如: &
26、#160; StringBuffer sb = new StringBuffer(); String user = “test”; &
27、#160; String pwd = “123”; sb.append(“select * from userInfo where username=“) &
28、#160; .append(user) .append(“ and pwd=”) .append(pwd);
29、 這樣對象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。b、deleteCharAt方法 public StringBuffer deleteCharAt(int index)該方法的作用是刪除指定位置的字符,然后將剩余的內容形成新的字符串。例如:
30、160; StringBuffer sb = new StringBuffer(“Test”); sb. deleteCharAt(1);該代碼的作用刪除字符串對象sb中索引值為1的字符,也就是刪除第二個字符,剩余的內容組成一個新的字符串。所以對象sb的值變為”Tst”。還存在一個功能類似的delete方法: public StringBuffer delete(int start,int end)該方法
31、的作用是刪除指定區間以內的所有字符,包含start,不包含end索引值的區間。例如: StringBuffer sb = new StringBuffer(“TestString”); sb. delete (1,4);該代碼的作用是刪除索引值1(包括)到索引值4(不包括)之間的所有字符,剩余的字符形成新的字符串。則對象sb的值是”TString”。
32、0; c、insert方法 public StringBuffer insert(int offset, boolean
33、 b) 該方法的作用是在StringBuffer對象中插入內容,然后形成新的字符串。例如:
34、0; StringBuffer sb = new StringBuffer(“TestString”);
35、160; sb.insert(4,false);該示例代碼的作用是在對象sb的索引值4的位置插入false值,形成新的字符串,則執行以后對象sb的值是”TestfalseString”。 d、revers
36、e方法 public StringBuffer reverse()該方法的作用是將StringBuffer對象中的內容反轉,然后形成新的字符串。例如: StringBuffer s
37、b = new StringBuffer(“abc”); sb.reverse();經過反轉以后,對象sb中的內容將變為”cba”。 e、setCharAt方法
38、0; public void setCharAt(int index, char ch)
39、0; 該方法的作用是修改對象中索引值為index位置的字符為新的字符ch。例如: StringBuffer sb = new StringBuffer(“ab
40、c”); sb.setCharAt(1,D); &
41、#160; 則對象sb的值將變成”aDc”。 f、trimToSize方法
42、 public void trimToSize()該方法的作用是將StringBuffer對象的中存儲空間縮小到和字符串長度一樣的長度,減少空間的浪費。 總之,在實際使用時,String和StringBuffer各有優勢和不足,可以根據具體的使用環境,選擇對應的類型進行使用。S
43、tring中的equals方法線程:進程:一個程序加載數據后的一次運行線程:TestThread_1.java 一個程序的 不同的執行路徑單線程:程序一步步執行,執行完上一步才執行下一步,多線程(thread):創建線程后,多個線程之間交替執行時間片輪轉算法創建線程的方法一:繼承Thread【注意】1、Thread中的start()方法的功能就是創建一個新的線程,并自動調用該線程的run()方法,直接調用run()方法是不會創建一個新的線程的;2、執行一個線程實際就是執行該線程run方法中的代碼;3、執行完aa.start();后并不表示aa所對應的線程就一定會立即得到執行,aa.start(
44、);執行完后只是表示aa線程具有了可以立即被cpu執行的資格,但是由于想搶占cpu執行的線程很多,cpu并不一定會立即去執行aa所對應的線程。4、一個Thread對象能且只能代表一個線程,一個Thread對象不能調用兩次start()方法,否則會拋出java.lang.lllegalThreadStateException異常創建線程的方法二:實現Runnable接口Class A implements Runnable/使類A具有了run()A aa=new A();Thread t=new Thread(aa);/創建一個線程,將aa作為運行對象T.start();Thread的常用方法:
45、Public final void setName()/設置當前線程的名字Public static Thread currentThread()/返回當前正在執行的線程對象的引用Public final String getName()/返回當前線程的名字線程的狀態切換:線程控制:線程控制的基本方法:isAlive() 判斷線程是否還活著getPriority() 獲取優先級Thread.sleep() 線程休眠Join() 等待另一個線程運行完自己再運行(一個線程用到另一個線程的結果)線程的串行化Yield() 線程讓步,讓出CPU,當前線程進入就緒隊列Wait() 線程等待Notify(
46、)/NotifyAll() 喚醒一個/所有線程優先級(1-10 小-大,默認5)線程的休眠:線程的掛起和恢復 線程的結束線程的同步:賣票(本質就是多個線程訪問一個資源,線程同步就是保證資源多個線程處理資源過程中不出現錯誤)問題:線程沒處理完,語句沒有執行完,就切換到另外一個線程,If(票數大于0)/必須只有一個線程訪問 買一張票; 票數減一;ABC三個售票點;Synchronized(str) /Synchronized同步修飾一個方法-霸占正在調用該方法的對象修飾一個方法內部的某個代碼塊引入Synchronized的目的就是讓售票代碼和-tickets;代碼,能要么都執行要么都不執行;生產和消費(本質就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湛江市徐聞中學2025年高三下學期期中試卷物理試題含解析
- 江蘇省揚州市高郵市2024-2025學年初三第二次模擬考試化學試題(詳細答案版)含解析
- 機關單位員工聘用合同樣本
- 股份制投資合同全文
- 統編版二年級語文下冊第六單元測試卷(A)(含答案)
- 設備更新改造服務合同
- 股權轉讓合同及退股條款
- 版私人公司股權轉讓協議模板
- 咳嗽中醫診治
- 法律是什么公開課一等獎創新教學設計
- 司法鑒定人執業能力評估業務理論知識考試題庫
- 短語動詞課件
- 警犬行為理論考試題庫(含答案)
- 《羅密歐與朱麗葉》劇本
- 7694E頂空進樣器簡易操作手冊
- 河流納污能力計算
- 鉆井液防塌機理與措施-第六組
- 停車場應急預案
- 研究生在讀證明.docx
- 觀音庵收費站關于計重設備的管理和使用細則
- 卡農曲譜canon-in-D-鋼琴小提琴合奏-五線譜(共6頁)
評論
0/150
提交評論