第2章 一切都是對象2.1 用句柄操縱對象2.2 必須創(chuàng )建所有對象2.2.1 保存在什么地方2.2.2 特殊情況:主類(lèi)型2.2.3 Java中的數組2.3 絕對不要清除對象2.3.1 作用域2.3.2 對象的作用域2.4 新建數據類(lèi)型:類(lèi)2.4.1 字段和方法2.5 方法、自變量和返回值2.5.1 自變量列表2.6 構建Java程序2.6.1 名字的可見(jiàn)性2.6.2 使用其他組件2.6.3 static關(guān)鍵字2.7 我們的第一個(gè)Java程序2.8 注釋和嵌入文檔2.8.1 注釋文檔2.8.2 具體語(yǔ)法2.8.3 嵌入HTML2.8.4 @see:引用其他類(lèi)2.8.5 類(lèi)文檔標記2.8.6 變量文檔標記2.8.7 方法文檔標記2.8.8 文檔示例2.9 編碼樣式2.10 總結2.11 練習 第3章 控制程序流程3.1 使用Java運算符3.1.1 優(yōu)先級3.1.2 賦值3.1.3 算術(shù)運算符3.1.4 自動(dòng)遞增和遞減3.1.5 關(guān)系運算符3.1.6 邏輯運算符3.1.7 按位運算符3.1.8 移位運算符3.1.9 三元if-else運算符3.1.10 逗號運算符3.1.11 字串運算符+3.1.12 運算符常規操作規則3.1.13 造型運算符3.1.14 Java沒(méi)有“sizeof”3.1.15 復習計算順序3.1.16 運算符總結3.2 執行控制3.2.1 真和假3.2.2 if-else3.2.3 反復3.2.4 do-while3.2.5 for3.2.6 中斷和繼續3.2.7 切換3.3 總結3.4 練習 第4章 初始化和清除4.1 由構建器保證初始化4.2 方法過(guò)載4.2.1 區分過(guò)載方法4.2.2 主類(lèi)型的過(guò)載4.2.3 返回值過(guò)載4.2.4 默認構建器4.2.5 this關(guān)鍵字4.3 清除:收尾和垃圾收集4.3.1 finalize()用途何在4.3.2 必須執行清除4.4 成員初始化4.4.1 規定初始化4.4.2 構建器初始化4.5 數組初始化4.5.1 多維數組4.6 總結4.7 練習 第5章 隱藏實(shí)施過(guò)程5.1 包:庫單元5.1.1 創(chuàng )建獨一無(wú)二的包名5.1.2 自定義工具庫5.1.3 利用導入改變行為5.1.4 包的停用5.2 Java訪(fǎng)問(wèn)指示符5.2.1 “友好的”5.2.2 public:接口訪(fǎng)問(wèn)5.2.3 private:不能接觸5.2.4 protected:“友好的一種”5.3 接口與實(shí)現5.4 類(lèi)訪(fǎng)問(wèn)5.5 總結5.6 練習 第6章 類(lèi)再生6.1 合成的語(yǔ)法6.2 繼承的語(yǔ)法6.2.1 初始化基礎類(lèi)6.3 合成與繼承的結合6.3.1 確保正確的清除6.3.2 名字的隱藏6.4 到底選擇合成還是繼承6.5 protected6.6 遞增開(kāi)發(fā)6.7 上溯造型6.7.1 何謂“上溯造型”?6.8 final關(guān)鍵字6.8.1 final數據6.8.2 final方法6.8.3 final類(lèi)6.8.4 final的注意事項6.9 初始化和類(lèi)裝載6.9.1 繼承初始化6.10 總結6.11 練習 第7章 多形性7.1 上溯造型7.1.1 為什么要上溯造型7.2 深入理解7.2.1 方法調用的綁定7.2.2 產(chǎn)生正確的行為7.2.3 擴展性7.3 覆蓋與過(guò)載7.4 抽象類(lèi)和方法7.5 接口7.5.1 Java的“多重繼承”7.5.2 通過(guò)繼承擴展接口7.5.3 常數分組7.5.4 初始化接口中的字段7.6 內部類(lèi)7.6.1 內部類(lèi)和上溯造型7.6.2 方法和作用域中的內部類(lèi)7.6.3 鏈接到外部類(lèi)7.6.4 static內部類(lèi)7.6.5 引用外部類(lèi)對象7.6.6 從內部類(lèi)繼承7.6.7 內部類(lèi)可以覆蓋嗎?7.6.8 內部類(lèi)標識符7.6.9 為什么要用內部類(lèi):控制框架7.7 構建器和多形性7.7.1 構建器的調用順序7.7.2 繼承和finalize()7.7.3 構建器內部的多形性方法的行為7.8 通過(guò)繼承進(jìn)行設計7.8.1 純繼承與擴展7.8.2 下溯造型與運行期類(lèi)型標識7.9 總結7.10 練習 第8章 對象的容納8.1 數組8.1.1 數組和第一類(lèi)對象8.1.2 數組的返回8.2 集合8.2.1 缺點(diǎn):類(lèi)型未知8.3 枚舉器(反復器)8.4 集合的類(lèi)型8.4.1 Vector8.4.2 BitSet8.4.3 Stack8.4.4 Hashtable8.4.5 再論枚舉器8.5 排序8.6 通用集合庫8.7 新集合8.7.1 使用Collections8.7.2 使用Lists8.7.3 使用Sets8.7.4 使用Maps8.7.5 決定實(shí)施方案8.7.6 未支持的操作8.7.7 排序和搜索8.7.8 實(shí)用工具8.8 總結8.9 練習 第9章 違例差錯控制9.1 基本違例9.1.1 違例自變量9.2 違例的捕獲9.2.1 try塊9.2.2 違例控制器9.2.3 違例規范9.2.4 捕獲所有違例9.2.5 重新“擲”出違例9.3 標準Java違例9.3.1 RuntimeException的特殊情況9.4 創(chuàng )建自己的違例9.5 違例的限制9.6 用finally清除9.6.1 用finally做什么9.6.2 缺點(diǎn):丟失的違例9.7 構建器9.8 違例匹配9.8.1 違例準則9.9 總結9.10 練習 第10章 Java IO系統10.1 輸入和輸出10.1.1 InputStream的類(lèi)型10.1.2 OutputStream的類(lèi)型10.2 增添屬性和有用的接口10.2.1 通過(guò)FilterInputStream從InputStream里讀入數據10.2.2 通過(guò)FilterOutputStream向OutputStream里寫(xiě)入數據10.3 本身的缺陷:RandomAccessFile10.4 File類(lèi)10.4.1 目錄列表器10.4.2 檢查與創(chuàng )建目錄10.5 IO流的典型應用10.5.1 輸入流10.5.2 輸出流10.5.3 快捷文件處理10.5.4 從標準輸入中讀取數據10.5.5 管道數據流10.6 StreamTokenizer10.6.1 StringTokenizer10.7 Java 1.1的IO流10.7.1 數據的發(fā)起與接收10.7.2 修改數據流的行為10.7.3 未改變的類(lèi)10.7.4 一個(gè)例子10.7.5 重定向標準IO10.8 壓縮10.8.1 用GZIP進(jìn)行簡(jiǎn)單壓縮10.8.2 用Zip進(jìn)行多文件保存10.8.3 Java歸檔(jar)實(shí)用程序10.9 對象串聯(lián)10.9.1 尋找類(lèi)10.9.2 序列化的控制10.9.3 利用“持久性”10.10 總結10.11 練習 第11章 運行期類(lèi)型鑒定11.1 對RTTI的需要11.1.1 Class對象11.1.2 造型前的檢查11.2 RTTI語(yǔ)法11.3 反射:運行期類(lèi)信息11.3.1 一個(gè)類(lèi)方法提取器11.4 總結11.5 練習 第12章 傳遞和返回對象12.1 傳遞句柄12.1.1 別名問(wèn)題12.2 制作本地副本12.2.1 按值傳遞12.2.2 克隆對象12.2.3 使類(lèi)具有克隆能力12.2.4 成功的克隆12.2.5 Object.clone()的效果12.2.6 克隆合成對象12.2.7 用Vector進(jìn)行深層復制12.2.8 通過(guò)序。
試試這個(gè)怎么樣 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class Test extends JFrame implements ActionListener {private JMenuBar menuBar; private JMenu menuFile; private JMenu menuHelp; private JLabel label; private JButton button; private JMenuItem menuClose; private JMenuItem menuAbout; private static final long serialVersionUID = 1L; public Test() { init(); setLayout(null); add(menuBar); add(label); add(button); setVisible(true); setLocation(900,100); setSize(250,500); setResizable(false); } private void init() { menuBar=new JMenuBar(); menuBar.setBounds(0,0,250,30); menuFile=new JMenu("文件"); menuHelp=new JMenu("幫助"); menuBar.add(menuFile); menuBar.add(menuHelp); label=new JLabel("單擊幫助菜單或按鈕,查看信息。
"); label.setBounds(10,350,250,30); button=new JButton("關(guān)于"); button.setBounds(50,250,70,30); menuClose=new JMenuItem("關(guān)閉"); menuFile.add(menuClose); menuAbout=new JMenuItem("關(guān)于"); menuHelp.add(menuAbout); button.addActionListener(this); menuAbout.addActionListener(this); menuClose.addActionListener(this); } public static void main(String[] args) { new Test(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==button||e.getSource()==menuAbout) {new Test2();} if(e.getSource()==menuClose) {this.dispose(); } } } class Test2 extends JDialog { private JLabel label; private static final long serialVersionUID = 1L; public Test2() {init(); add(label); setSize(300,200); setLocation(500,200); setVisible(true); } private void init() { label=new JLabel(); label.setText("我愛(ài)java!"); } }。
1、對象的初始化(1) 非靜態(tài)對象的初始化 在創(chuàng )建對象時(shí),對象所在類(lèi)的所有數據成員會(huì )首先進(jìn)行初始化。
基本類(lèi)型:int型,初始化為0。 如果為對象:這些對象會(huì )按順序初始化。
※在所有類(lèi)成員初始化完成之后,才調用本類(lèi)的構造方法創(chuàng )建對象。 構造方法的作用就是初始化。
(2) 靜態(tài)對象的初始化 程序中主類(lèi)的靜態(tài)變量會(huì )在main方法執行前初始化。 不僅第一次創(chuàng )建對象時(shí),類(lèi)中的所有靜態(tài)變量都初始化,并且第一次訪(fǎng)問(wèn)某類(lèi)(注意此時(shí) 未創(chuàng )建此類(lèi)對象)的靜態(tài)對象時(shí),所有的靜態(tài)變量也要按它們在類(lèi)中的順序初始化。
2、繼承時(shí),對象的初始化過(guò)程 (1) 主類(lèi)的超類(lèi)由高到低按順序初始化靜態(tài)成員,無(wú)論靜態(tài)成員是否為private。 (2) 主類(lèi)靜態(tài)成員的初始化。
(3) 主類(lèi)的超類(lèi)由高到低進(jìn)行默認構造方法的調用。注意,在調用每一個(gè)超類(lèi)的默認構造 方法前,先進(jìn)行對此超類(lèi)進(jìn)行非靜態(tài)對象的初始化。
(4) 主類(lèi)非靜態(tài)成員的初始化。 (5) 調用主類(lèi)的構造方法。
3、關(guān)于構造方法 (1) 類(lèi)可以沒(méi)有構造方法,但如果有多個(gè)構造方法,就應該要有默認的構造方法,否則在繼承此類(lèi)時(shí),需要在子類(lèi)中顯式調用父類(lèi)的某一個(gè)非默認的構造方法了。 (2) 在一個(gè)構造方法中,只能調用一次其他的構造方法,并且調用構造方法的語(yǔ)句必須是 第一條語(yǔ)句。
4、有關(guān)public、private和protected (1) 無(wú)public修飾的類(lèi),可以被其他類(lèi)訪(fǎng)問(wèn)的條件是:a.兩個(gè)類(lèi)在同一文件中,b.兩個(gè)類(lèi) 在同一文件夾中,c.兩個(gè)類(lèi)在同一軟件包中。 (2) protected:繼承類(lèi)和同一軟件包的類(lèi)可訪(fǎng)問(wèn)。
(3) 如果構造方法為private,那么在其他類(lèi)中不能創(chuàng )建該類(lèi)的對象。 5、抽象類(lèi) (1) 抽象類(lèi)不能創(chuàng )建對象。
(2) 如果一個(gè)類(lèi)中一個(gè)方法為抽象方法,則這個(gè)類(lèi)必須為abstract抽象類(lèi)。 (3) 繼承抽象類(lèi)的類(lèi)在類(lèi)中必須實(shí)現抽象類(lèi)中的抽象方法。
(4) 抽象類(lèi)中可以有抽象方法,也可有非抽象方法。抽象方法不能為private。
(5) 間接繼承抽象類(lèi)的類(lèi)可以不給出抽象方法的定義。 6、final關(guān)鍵字 (1) 一個(gè)對象是常量,不代表不能轉變對象的成員,仍可以其成員進(jìn)行操作。
(2) 常量在使用前必須賦值,但除了在聲明的同時(shí)初始化外,就只能在構造方法中初始化 。 (3) final修飾的方法不能被重置(在子類(lèi)中不能出現同名方法)。
(4) 如果聲明一個(gè)類(lèi)為final,則所有的方法均為final,無(wú)論其是否被final修飾,但數據 成員可為final也可不是。 7、接口interface (用implements來(lái)實(shí)現接口) (1) 接口中的所有數據均為 static和final即靜態(tài)常量。
盡管可以不用這兩個(gè)關(guān)鍵字修飾 ,但必須給常量賦初值。 (2) 接口中的方法均為public,在實(shí)現接口類(lèi)中,實(shí)現方法必須可public關(guān)鍵字。
(3) 如果使用public來(lái)修飾接口,則接口必須與文件名相同。 8、多重繼承 (1) 一個(gè)類(lèi)繼承了一個(gè)類(lèi)和接口,那么必須將類(lèi)寫(xiě)在前面,接口寫(xiě)在后面,接口之間用逗 號分隔。
(2) 接口之間可多重繼承,注意使用關(guān)鍵字extends。 (3) 一個(gè)類(lèi)雖只實(shí)現了一個(gè)接口,但不僅要實(shí)現這個(gè)接口的所有方法,還要實(shí)現這個(gè)接口 繼承的接口的方法,接口中的所有方法均須在類(lèi)中實(shí)現。
9、接口的嵌入 (1) 接口嵌入類(lèi)中,可以使用private修飾。此時(shí),接口只能在所在的類(lèi)中實(shí)現,其他類(lèi)不 能訪(fǎng)問(wèn)。
(2) 嵌入接口中的接口一定要為public。 10、類(lèi)的嵌入 (1) 類(lèi)可以嵌入另一個(gè)類(lèi)中,但不能嵌入接口中。
(2) 在靜態(tài)方法或其他方法中,不能直接創(chuàng )建內部類(lèi)對象,需通過(guò)手段來(lái)取得。 手段有兩種: class A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); } (3) 一個(gè)類(lèi)繼承了另一個(gè)類(lèi)的內部類(lèi),因為超類(lèi)是內部類(lèi),而內部類(lèi)的構造方法不能自動(dòng) 被調用,這樣就需要在子類(lèi)的構造方法中明確的調用超類(lèi)的構造方法。
接上例: class C extends A.B { C() { new A().super(); // 這一句就實(shí)現了對內部類(lèi)構造方法的調用。 } } 構造方法也可這樣寫(xiě): C(A a) { a.super(); } // 使用這個(gè)構造方法創(chuàng )建對象,要寫(xiě)成C c = new C(a); a是A的對象。
11、異常類(lèi) JAVA中除了RunTimeException 類(lèi),其他異常均須捕獲或拋出。至于數據庫,WEB,JSP,JS之類(lèi)的那是高級部分了。
JAVA基礎知識可以到IT學(xué)習聯(lián)盟下載。
但是這套教程只是基礎。要學(xué)會(huì )真正到j(luò )ava就要一套完整到j(luò )ava視頻教程。
完整的java教程可以看看IT學(xué)習聯(lián)盟的<>。零基礎Java就業(yè)班包括Java基礎 進(jìn)階 高級 項目。
是一套完整的Java視頻教程。這套教程從零基礎開(kāi)始教起,零基礎到就業(yè)水平。
就算沒(méi)基礎也可以學(xué)習的。…………………………………………………………………………………… 看你問(wèn)的問(wèn)題,應該是對java很感興趣,其實(shí)你可以自學(xué)java。
關(guān)于如何學(xué)習java,我剛才看到一篇很不錯的文章,是一個(gè)農民工介紹自己如何自學(xué)java,并找到j(luò )ava的工作,里面介紹了他的學(xué)習方法和學(xué)習過(guò)程,希望對你有幫助。 我是一名地地道道的農民工,生活在經(jīng)濟落后的農村,有一個(gè)哥哥和一個(gè)弟弟,父母都是地道的農民,日出而作,日落而息,我從小到大學(xué)習一直很好,從小學(xué)到高一都,成績(jì)在全級一直名列前茅,這樣我也順利了考上省的重點(diǎn)高中,然而,每個(gè)學(xué)期開(kāi)學(xué)是家里最為難的時(shí)候,每次交學(xué)費都讓父母發(fā)愁許久,家里為了給我籌錢(qián)讀書(shū),都借了不少錢(qián),才讓我讀上高中。
我知道我讀到高中家里已經(jīng)欠了好多債,為了減輕家里的負擔,我選擇了退學(xué)。 2009年我高一退學(xué),為了給家里還債,干過(guò)建筑工地的小工,搞過(guò)塑料制品加工,送水工等等。
很工資都很低,一個(gè)月也就1000多,加上加班費一個(gè)月能拿2000多一點(diǎn),我每個(gè)月都向家里寄回800-1000元,到了2011年末,一次偶然的機會(huì )我接觸了Java,聽(tīng)說(shuō)Java的前景挺不錯,工資相對于我一個(gè)農民工來(lái)說(shuō)簡(jiǎn)直是天文數字,于是我在新華書(shū)店買(mǎi)了幾本Java的書(shū),盡管白天辛苦工作,晚上回來(lái)還是堅持看書(shū),但有于基礎太差很多都很不明白,但還是堅持看,一有看1-2個(gè)小時(shí)Java的書(shū),看著(zhù)看著(zhù)許多基礎都慢慢的學(xué)會(huì )了,但那些比較難的還是看不懂,后來(lái)還買(mǎi)了有些關(guān)于框架的書(shū),還是看不懂,這樣斷斷續續的持續了半年多,覺(jué)得自己Java的基礎都差不多懂了,但框架還是看不懂,還有最缺的項目經(jīng)驗,看了很多招聘Java程序員的簡(jiǎn)介都要項目經(jīng)驗,相對我一個(gè)農民工來(lái)連框架都弄不明白,想找一份Java工作對我來(lái)說(shuō)簡(jiǎn)直是奢侈。我只想學(xué)Java,并不敢想以后能從事Java的工作。
一次,在百度上看到一篇讓我很鼓舞的文章,是一個(gè)Java高手介紹在沒(méi)有基礎的朋友怎么自學(xué)入門(mén)Java,文章寫(xiě)的很好,包含了如何學(xué)習,該怎么學(xué)習,他提到一個(gè)方法就是看視頻,因為看書(shū)實(shí)在太枯燥和費解的,不少是我們也看不懂,這點(diǎn)我真的很認同,我自己看書(shū)都看了很久才學(xué)會(huì )基礎。曾經(jīng)有想過(guò)參加培訓,但是上萬(wàn)元的培訓費讓我望而卻步,我工資這么低,每個(gè)月還有向家里匯錢(qián),加上城市消費比較高,雖然每個(gè)月只有幾百剩下,但是相對于上萬(wàn)萬(wàn)學(xué)費和四個(gè)月的吃住費用逼我連想不敢想。
于是我決定看視頻,我就去搜索Java的視頻,雖然我零星的找到一些Java的視頻,但是都不系統。最重要連項目都沒(méi)有。
后來(lái)我找到一份很好的視頻,是IT學(xué)習聯(lián)盟這個(gè)網(wǎng)站一套視頻叫<>,網(wǎng)址: /portal.php?mod=view&aid=5。的教程還不錯,很完整。
還贈送11個(gè)頂級企業(yè)項目。價(jià)格很合理,于是我買(mǎi)下來(lái)。
于是開(kāi)始了我的自學(xué)Java的路,收到光盤(pán)后,我就開(kāi)始學(xué)習,剛開(kāi)始學(xué)習還不錯,是從零基礎教起,老師幽默風(fēng)趣而又輕松的課堂教課,使我發(fā)現原來(lái)學(xué)習JAVA并不是一件很難的事情。因為我本來(lái)基礎還不錯,前面的基礎看一篇我就過(guò)去了,到了框架,我覺(jué)不又不是很難,可能老師太牛了,他能把復雜的問(wèn)題講的比較通俗易懂,有些難點(diǎn)的地方我還是連續看了五六次,把他弄懂。
每天下午6點(diǎn)下班后,吃了飯,馬上跑回家。看視頻,買(mǎi)了幾本筆記本。
當時(shí),為了編程還花幾百元了臺二手的臺式電腦,配置一般,但編程是足夠的。一邊看視頻,一邊記筆記,把重點(diǎn)都記下來(lái),還一邊跟著(zhù)老師敲代碼,為了能盡早學(xué)會(huì )Java。
每天都堅持學(xué)5-6個(gè)小時(shí)。經(jīng)常學(xué)到晚上一點(diǎn)多才睡覺(jué)。
星期六,日不用上班,每天7點(diǎn)多起床,學(xué)到晚上11,12點(diǎn)。那段時(shí)間特別辛苦,特別累。
在學(xué)習Java的三個(gè)多月里,除了吃飯睡覺(jué)工作,剩余的時(shí)間都在學(xué)習,因為我知道自己的計算機基礎不是很好,也沒(méi)有學(xué)過(guò)什么計算機,只是學(xué)了些Java基礎,相對于那些科班的人來(lái)說(shuō)我要比他們付出更多的努力。我只能咬緊牙關(guān),堅持下去,我不能放棄,我要完成我的夢(mèng)想,我要讓我的家人過(guò)上好日子。
終于三個(gè)多月后我把Java教程里的內容和項目都學(xué)完了,在學(xué)項目的過(guò)程中我發(fā)現項目特別重要,他能把你學(xué)過(guò)的知識全部聯(lián)系起來(lái),能更好的理解你所學(xué)的知識。還有學(xué)習過(guò)程中,動(dòng)手很重要,要經(jīng)常跟著(zhù)老師動(dòng)手敲,動(dòng)手吧,跟著(zhù)做,一行一行的跟著(zhù)敲,再試著(zhù)加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比干聽(tīng)大的多。
如果遇到暫時(shí)對于一些思路不能理解的,動(dòng)手寫(xiě),先寫(xiě)代碼,慢慢你就會(huì )懂了。這套視頻還贈送了11個(gè)頂級企業(yè)項目,對于我沒(méi)有任何經(jīng)驗的人來(lái)說(shuō),這個(gè)太重要了,還有在學(xué)習項目是提升能力最快的方法。
項目能把所有的知識點(diǎn)全都連到一起了,不再是分散的,而是形成一個(gè)整體了。
分享一下:Java初學(xué)者入門(mén)應該掌握的30個(gè)概念核心提示:OOP中唯一關(guān)系的是對象的接口是什么,就像計算機的銷(xiāo)售商她不管電源內部結構 是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道can or not而不是how and why。
基本概念: 1.OOP中唯一關(guān)系的是對象的接口是什么,就像計算機的銷(xiāo)售商她不管電源內部結構 是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道can or not而不是how and why。所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪(fǎng)問(wèn)通過(guò)函數調用來(lái)完成,對象間所有的交流都是通過(guò)方法調用,通過(guò)對封裝對象數據,很大 限度上提高復用率。
2.OOP中最重要的思想是類(lèi),類(lèi)是模板是藍圖,從類(lèi)中構造一個(gè)對象,即創(chuàng )建了這個(gè)類(lèi)的一個(gè)實(shí)例(instance)。3.封裝:就是把數據和行為結合起在一個(gè)包中)并對對象使用者隱藏數據的實(shí)現過(guò)程,一個(gè)對象中的數據叫他的實(shí)例字段(instance field)。
4.通過(guò)擴展一個(gè)類(lèi)來(lái)獲得一個(gè)新類(lèi)叫繼承(inheritance),而所有的類(lèi)都是由Object根超類(lèi)擴展而得,根超類(lèi)下文會(huì )做介紹。5.對象的3個(gè)主要特性 ehavior---說(shuō)明這個(gè)對象能做什么。
tate---當對象施加方法時(shí)對象的反映。 dentity---與其他相似行為對象的區分標志。
每個(gè)對象有唯一的indentity 而這3者之間相互影響。6.類(lèi)之間的關(guān)系: use-a :依賴(lài)關(guān)系 has-a :聚合關(guān)系 is-a :繼承關(guān)系--例:A類(lèi)繼承了B類(lèi),此時(shí)A類(lèi)不僅有了B類(lèi)的方法,還有其自己的方法.(個(gè)性存在于共性中)7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象并對其初始化。
例:Data類(lèi)的構造器叫Data ew Data()---構造一個(gè)新對象,且初始化當前時(shí)間。 Data happyday=new Data()---把一個(gè)對象賦值給一個(gè)變量happyday,從而使該對象能夠多次使用,此處要聲明的使變量與對象變量二者是不同的.new返回的值是一個(gè)引用。
構造器特點(diǎn):構造器可以有0個(gè),一個(gè)或多個(gè)參數; 構造器和類(lèi)有相同的名字;一個(gè)類(lèi)可以有多個(gè)構造器;構造器沒(méi)有返回值;構造器總是和new運算符一起使用。8.重載:當多個(gè)方法具有相同的名字而含有不同的參數時(shí),便發(fā)生重載.編譯器必須挑選出調用哪個(gè)方法。
9.包(package)Java允許把一個(gè)或多個(gè)類(lèi)收集在一起成為一組,稱(chēng)作包,以便于組織任務(wù),標準Java庫分為許多包。java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內。
10.繼承思想:允許在已經(jīng)存在的類(lèi)的基礎上構建新的類(lèi),當你繼承一個(gè)已經(jīng)存在的類(lèi)時(shí),那么你就復用了這個(gè)類(lèi)的方法和字段,同時(shí)你可以在新類(lèi)中添加新的方法和字段。11.擴展類(lèi):擴展類(lèi)充分體現了is-a的繼承關(guān)系. 形式為:class (子類(lèi)) extends (基類(lèi))。
12.多態(tài):在java中,對象變量是多態(tài)的.而java中不支持多重繼承。13.動(dòng)態(tài)綁定:調用對象方法的機制。
(1)編譯器檢查對象聲明的類(lèi)型和方法名。 (2)編譯器檢查方法調用的參數類(lèi)型。
(3)靜態(tài)綁定:若方法類(lèi)型為priavte static final 編譯器會(huì )準確知道該調用哪個(gè)方法。 (4)當程序運行并且使用動(dòng)態(tài)綁定來(lái)調用一個(gè)方法時(shí),那么虛擬機必須調用x所指向的對象的實(shí)際類(lèi)型相匹配的方法版本。
(5)動(dòng)態(tài)綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。14.final類(lèi):為防止他人從你的類(lèi)上派生新類(lèi),此類(lèi)是不可擴展的。
15.動(dòng)態(tài)調用比靜態(tài)調用花費的時(shí)間要長(cháng)。16.抽象類(lèi):規定一個(gè)或多個(gè)抽象方法的類(lèi)本身必須定義為abstract。
例: public abstract string getDescripition17.Java中的每一個(gè)類(lèi)都是從Object類(lèi)擴展而來(lái)的。18.object類(lèi)中的equal和toString方法。
equal用于測試一個(gè)對象是否同另一個(gè)對象相等。 toString返回一個(gè)代表該對象的字符串,幾乎每一個(gè)類(lèi)都會(huì )重載該方法,以便返回當前狀態(tài)的正確表示。
(toString 方法是一個(gè)很重要的方法)19.通用編程:任何類(lèi)類(lèi)型的所有值都可以同object類(lèi)性的變量來(lái)代替。20.數組列表:ArrayList動(dòng)態(tài)數組列表,是一個(gè)類(lèi)庫,定義在java.uitl包中,可自動(dòng)調節數組的大校21.class類(lèi) object類(lèi)中的getclass方法返回ckass類(lèi)型的一個(gè)實(shí)例,程序啟動(dòng)時(shí)包含在main方法的類(lèi)會(huì )被加載,虛擬機要加載他需要的所有類(lèi),每一個(gè)加載的類(lèi)都要加載它需要的類(lèi)。
22.class類(lèi)為編寫(xiě)可動(dòng)態(tài)操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具。能夠分析類(lèi)能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大。
A.在運行時(shí)分析類(lèi)的能力。 B.在運行時(shí)探察類(lèi)的對象。
C.實(shí)現通用數組操縱代碼。 D.提供方法對象。
而此機制主要針對是工具者而不是應用及程序。 反射機制中的最重要的部分是允許你檢查類(lèi)的結構.用到的API有: java.lang.reflect.Field 返回字段。
java.reflect.Method 返回方法。 java.lang.reflect.Constructor 返回參數。
方法指針:java沒(méi)有方法指針,把一個(gè)方法的地址傳給另一個(gè)方法,可以在后面調用它,而接口是更好的解決方案。23.接口(Interface)說(shuō)明類(lèi)該做什么而不指定如何去做,一個(gè)類(lèi)可以實(shí)現一個(gè)或多個(gè)interface。
24.接口不是一個(gè)類(lèi),而是對符合接口要求。
語(yǔ)言類(lèi)的,要多上手操作,多做寫(xiě)實(shí)例,做幾遍就差不多了,把重要的那幾個(gè)知識點(diǎn)做幾遍就差不多了,然后就是應用,單純語(yǔ)言的學(xué)習確實(shí)很枯燥,但是應用的話(huà)就很有意思了。
比如你學(xué)完java之后可以學(xué)習做java小游戲,網(wǎng)上找一些游戲框架,然后往上面添加主要的邏輯代碼什么的,還是挺有意思的。語(yǔ)言是想通的,學(xué)會(huì )一門(mén),其他研究研究就會(huì )了,比如你也可以去學(xué)習做網(wǎng)站,做點(diǎn)實(shí)例,做幾個(gè)就知道簡(jiǎn)單的網(wǎng)站開(kāi)發(fā)過(guò)程是怎么樣的了。
語(yǔ)言是基礎,如果一直停留在基礎上學(xué)習的話(huà),確實(shí)能提高功底,以后學(xué)習其他的東西也確實(shí)很快能上手,但是你覺(jué)得有必要嗎?那些太深的東西,用到的機會(huì )是比較少的,不會(huì )了找圖書(shū),找CSDN,找百度都可以啊,而且那樣是自己研究出來(lái)的,比這么灌輸式學(xué)法得到的更深刻。一句話(huà),多實(shí)踐。
你好,我java也是自學(xué)的,我就自己的經(jīng)驗給你說(shuō)下,首先看視頻比較好,這里推薦馬士兵的java視頻,優(yōu)酷上可以直接下,視頻講的很好,很容易聽(tīng)懂,張孝祥的也可以,他們的最大共同點(diǎn)就是:他們的教學(xué)都是以學(xué)生面試、就業(yè)為目的。對于一心想要學(xué)好java,然后就業(yè)的人,幫助很大。而且看視頻就相當于有個(gè)老師當面給你講解,是java初學(xué)者非常有效的方法。當然,光看視頻是不行的,還要找本java初級教程之類(lèi)的書(shū)看,這是打基礎的,基礎很重要,等看完視頻了,初級教程之類(lèi)的書(shū)至少要從頭到尾看一本,至于初級教程的書(shū),都差不多,你找一兩本合自己口味的就行,這時(shí)有一定基礎了,推薦你看《java編程思想》這本書(shū),現在已經(jīng)出第五版了,這本書(shū)已經(jīng)得到了學(xué)習java的絕大部分人的認可,雖然剛開(kāi)始看,會(huì )覺(jué)得難,不過(guò)不要緊,第一遍能看懂30%就不錯了,要多看幾遍,我當時(shí)是看了3遍,等著(zhù)本書(shū)看的差不多了,推薦你看《java核心技術(shù)》這本書(shū),分上下兩冊,這也是得到一致認可的好書(shū)。等你能把這兩本書(shū)看的差不多了,我想這個(gè)時(shí)候不用問(wèn)別人,自己差不多對自己的水平就有了個(gè)概念。
還有就是在學(xué)習的過(guò)程中肯定會(huì )遇到各種問(wèn)題,包括枯燥,氣餒等等,希望你能堅持到最后,到時(shí)一定能得到令你滿(mǎn)意的收獲!!其實(shí)學(xué)習java的過(guò)程中有很多樂(lè )趣的,比如玩自己編寫(xiě)的小游戲等等,成就感不言而喻!!
希望能幫到你,如有疑問(wèn),請繼續追問(wèn)!!
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.408秒