thinkforjava
一.1:Java 2 編程詳解---- Java是面向對象的、支持多線程的、體系結構獨立的解釋型動態語言,具有高度的安全懷、可移植性和代碼可重用性,具有很高的運行效率,是目前軟體中極為健壯的編程語言。Java2是SUN公司1998年12月發行的Java版本,它對前面的版本進行了完善和提高增加了基礎類、二維圖形介面類,媒體框架類和商業及Java Wallet等內容。本書較全地介紹了Java2的內容,並就部分內容與Java1。0和1。1版本作了對照講解。本書是綜合性的工具書,包含了Java編程語言的各方面的信息。如果讀者不熟悉Java,使用這本書就很合適;如果讀者已是Java專家,那麼本書也將為您的編程寶典。
2:JAVA基本語法知識,基本類庫:
《Thinking in Java》
《Core Java》
Java 程序員必讀之基礎篇
入門教材可以選用《21天學通Java 2(第3版)(專業參考版)》
原書名: Teach Yourself Java 2 in 21 days,Professional Reference Edition,Third Edition
作者: [美]Rogers Cadenhead,Laura Lemay
3:JAVA網路編程:《Java network programming and distribute computing》
4:JSP開發:《JSP技術手冊》,《JSP應用技術開發》
5:JAVA和UML建模:《UML for Java Programmer》
6:設計模式:《Java與模式》
二.推薦Java學習書籍
--------------------------------------------------------------------------------
一、入門
《Java 2從入門到精通》- 推薦
《Thinking in Java》- 強烈推薦*
O』reilly的Java編程基礎系列 - 參考*
二、進階
《Java Cook Book》- 非常推薦* (包含了Java編程的Tips,適合當做手冊來查閱)
《O』reilly-Java IO》- 推薦* (包含Java IO編程的各個方面)
《O』reilly-Database Programming with JDBC》- 推薦* (JDBC編程)
《O』reilly-Java Programming with Oracle JDBC》- 參考*
三、Java Web編程
《O』reilly-Java Server Pages》- 強烈推薦*
《O』reilly-Java Servlet Programming》- 非常推薦*
《O』reilly-Jakarta Struts》- 推薦* (Java Web編程的一個MVC實現框架Struts的書)
四、EJB編程
《J2EE應用與BEA Weblogic Server》- 強烈推薦
《Mastering EJB 2.0》- 非常推薦*
《Enterprise Java Bean》- 推薦*
五、Java XML編程
《O』reilly-Java and XML》- 推薦*
《O』reilly-Java and SOAP》- 參考* (Java的SOAP編程)
六、設計模式
《Core J2EE Patterns》- 強烈推薦* (J2EE設計模式,設計企業應用軟體必備參考書)
《EJB Design Patterns》- 推薦*
七、其它
《O』reilly Ant - The Definitive Guide》- 推薦* (Ant是一種功能非常強大的Java工具)
Note:
強烈推薦書籍:建議購買,重點學習
非常推薦書籍:建議花時間學習
推薦書籍:在學有餘力的情況下,建議學習
參考書籍:有興趣的情況下學習
標明*號的書籍有電子版本
⑵ 應該怎樣學習JAVA順序是什麼
不知道Java 學習順序的話,我提供你一條學習線路圖!
按照視頻學習的過程中,學習方法也是很重要的!一定要記得勤記筆記,整理程思維導圖,方便後續復習方便。
第一部分:JavaSE:Java語言最基本的一套庫
學習JavaEE或JavaME之前,JavaSE是必學的。
* Java開發環境搭建
* Java基礎語法
* 面向對象
* 數組
* 異常
* 集合
* 線程
* IO流
* 反射機制
* 註解Annotation
* 網路編程
第二部分:資料庫 【MySQL + JDBC】
* 只要學習編程,資料庫是一定要學習的,是一門公共的學科。
* java、C、python、C#等程序員都需要學習資料庫。
* 資料庫產品很多: MySQL、Oracle、SqlServer、DB2......
* 我們動力節點資料庫課程包括:MySQL + Oracle
* Oracle:銀行、政府使用oracle的較多。
* MySQL:互聯網公司、一般企業使用MySQL較多。
* Oracle我們是提供視頻的。課堂上不講。
* 我們課堂上講MySQL。
* Java語言鏈接資料庫:JDBC
第三部分:WEB前端
* 系統結構:B/S【Browser/Server】 C/S【Client/Server】
* WEB是網站的意思。WEB前端是:網站當中的頁面。
* WEB前端程序是運行在瀏覽器當中的。
* HTML5 + CSS3 + JavaScript(JS)
* WEB前端也有很多框架:
- jQuery
- Bootstrap
- Vue
- NodeJS
- AugularJS
- RectJS
- LayUI
- EasyUI
.....
第四部分:JavaWEB
* Servlet
* JSP
* AJAX(是JavaScript的一部分語法,專門做頁面局部刷新)
第五部分:JavaWEB項目
* 做一個B/S結構的項目,將WEB前端和JavaWEB內容做一個整合練習。
* 其實到這里為止,所有的系統都可以做了。但是用的技術很Low。沒有用框架。
⑶ 學java看什麼書
建議你這樣試試看:首先初學者看書學習Java是非常不明智的,因為技術性的書籍是非常難啃的,因為我做Java這塊有十多年了,非常了解看書自學Java是多麼沒有效率,不適合初學者Java。你應該選擇一套系統的Java學習教程,然後跟著教程走。書籍應該是當你會實際寫程序後,然後你看技術書籍,這樣就可以理解的更加深刻。而你直接看書是非常難懂的,最後直學個理論,不會實際應用。
Head First Java教材,看起來都特別輕松,圖文並茂,簡單易懂,適合初學者選擇。
這樣做的好處:教程是專業人士進行知識點分解講解的,然後在配上適合初學者學習的書籍,讓你更加深刻的理解每一個知識點的用途。
如果自己沒有好的Java學習教程,可以添加這個Java學習qun:前面是四九四,中間是八零一,後面是九三一。找管理員獲取教程鏈接。
注意事項:
前期有人指導,不要想著都靠自己自學,要學會借力。
學習編程就是多練習,至少有三分之二的時間都要拿來寫大量的代碼。
掌握好學習方法技巧,學習編程非常講究技巧,關於這點多跟有經驗的人交流。
⑷ 按理說一個非抽象類實現了一個介面不應該實現這個介面全部的方法嘛可是在think in java實現Comparator
真是很細心,這個問題從來沒有想過
Ojbect類中的equals
publicbooleanequals(Objectobj){
return(this==obj);
}
現在問題變成了為什麼Comparator要有
booleanequals(Objectobj);
方法
請一定要記住實現了Comparator方法,最好不要覆蓋equals方法
下面英文的大概意思是你覆蓋了Comparator的equals方法最好是不要把這個類的相關邏輯摻和進來,因為一個普通的類覆蓋了equals方法都會檢查某些屬性是否相等,但是比較器就應該比較比較器本身是否相等
In common java objects, we will decide two objects are equal by checking its one or more than one instance variables.
Form javaDoc Comparator
returntrue->thiscomparator.
Means we need to check for its business logic (This is what really makes two comparators objects equal)
Also from JavaDoc
Notethatitisalways*safenot*tooverrideObject.equals(Object).
Since the POJO class can have its own equals() which would check for some of its instance variables(Which makes it really unique). If we implement comparator interface in the same POJO class and provide the equals () for comparator then we cannot check equality for POJO class, vice versa. That is the reason it mentioned it's not to override equals().
As explained earlier this is to 'just to expand on the general contract of the method'. So that we would treat comparator equals() is different from POJO equals() .
下面是引用自另一篇文章:
The equals( ) method, shown here, tests whether an object equals the invoking comparator:
booleanequals(Objectobj)
obj is the object to be tested for equality. The method returns true if obj and the invoking object are both Comparator objects and use the same ordering. Otherwise, it returns false.
Overriding equals( ) is unnecessary, and most simple comparators will not do so.
如果覆蓋了Comparator是比較他們都是比較器,並且是使用相同的比較策略,所以一般不要覆蓋
再說了比較器本身的用途就是用來比較,某些模型不應該實現這個介面,為什麼Comparator要麻煩的寫出這個方法,是要告訴我們正確覆蓋這個equals方法的方式,但是由於Object中已經有這個這個方法的實現了,所以一般實現Comparator是不需要覆蓋這個equals方法的,覆蓋也是沒有意義的,所以thinking in java的作者就正確地沒有覆蓋這個可以不需要覆蓋的方法
⑸ Java中HashSet不是說輸出亂序的嗎
Hash是無序的沒錯,但是誰跟你說是隨機的呢?
有順序一定不是隨機的,但是沒順序也不一定就是隨機的啊。
你應該去復習一下哈希表。
就知道為什麼了。
每個元素的具體位置,是由元素的哈希值決定的。
你每次執行的時候,Set中的元素都是一樣的。當然每個元素的哈希值是一樣的,產生出來的哈希表也是一樣的。這有什麼問題嗎?
-------------------------補充:
就算運行了也沒有疑問啊?我估計你是在疑問為什麼每次都是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]吧。
這是當然了的。Integer的hashCode還是本身啊。所以當然是排序的。
你不能復習一下hash表嗎?
你的書的例子有問題,或者是你的書比較老,運行在很古老版本的jdk上,反正現在是不可能出現你上面提到的結果的。
給你一個極端的例子。
你自己定義一個Integer類。
class MyInteger{
private Integer myInt;
public MyInteger(int i) {
myInt = i;
}
public int hashCode() {
return 1;
}
public int value(){
return myInt;
}
public boolean equals(Object obj) {
if(!(obj instanceof MyInteger))return false;
return myInt.equals(((MyInteger)obj).value());
}
public String toString(){
return myInt.toString();
}
}
你看保證跟你插入的順序是一致的,因為hashCode我定死了是1.
⑹ 學習JAVA應該准備點什麼
1. JAVA學習路線 1.1 基礎語法及JAVA原理 基礎語法和JAVA原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當危險的。學習JAVA也是如此,必須要有扎實的基礎,你才能在J2EE、J2ME領域游刃有餘。參加SCJP(SUN公司認證的JAVA程序員)考試不失為一個好方法,原因之一是為了對得起你交的1200大洋考試費,你會更努力學習,原因之二是SCJP考試能夠讓你把基礎打得很牢靠,它要求你跟JDK一樣熟悉JAVA基礎知識;但是你千萬不要認為考過了SCJP就有多了不起,就能夠獲得軟體公司的青睞,就能夠獲取高薪,這樣的想法也是很危險的。獲得"真正"的SCJP只能證明你的基礎還過得去,但離實際開發還有很長的一段路要走。 1.2 OO思想的領悟 掌握了基礎語法和JAVA程序運行原理後,我們就可以用JAVA語言實現面向對象的思想了。面向對象,是一種方法學;是獨立於語言之外的編程思想;是CBD基於組件開發的基礎;屬於強勢技術之一。當以後因工作需要轉到別的面向對象語言的時候,你會感到特別的熟悉親切,學起來像喝涼水這么簡單。 使用面向對象的思想進行開發的基本過程是: ●調查收集需求。 ●建立用例模型。 ●從用例模型中識別分析類及類與類之間的靜態動態關系,從而建立分析模型。 ●細化分析模型到設計模型。 ●用具體的技術去實現。 ●測試、部署、總結。 1.3 基本API的學習 進行軟體開發的時候,並不是什麼功能都需要我們去實現,也就是經典名言所說的"不需要重新發明輪子"。我們可以利用現成的類、組件、框架來搭建我們的應用,如SUN公司編寫好了眾多類實現一些底層功能,以及我們下載過來的JAR文件中包含的類,我們可以調用類中的方法來完成某些功能或繼承它。那麼這些類中究竟提供了哪些方法給我們使用?方法的參數個數及類型是?類的構造器需不需要參數?總不可能SUN公司的工程師打國際長途甚至飄洋過海來告訴你他編寫的類該如何使用吧。他們只能提供文檔給我們查看,JAVA DOC文檔(參考文獻4.4)就是這樣的文檔,它可以說是程序員與程序員交流的文檔。 基本API指的是實現了一些底層功能的類,通用性較強的API,如字元串處理/輸入輸出等等。我們又把它成為類庫。熟悉API的方法一是多查JAVA DOC文檔(參考文獻4.4),二是使用JBuilder/Eclipse等IDE的代碼提示功能。 1.4 特定API的學習 JAVA介入的領域很廣泛,不同的領域有不同的API,沒有人熟悉所有的API,對一般人而言只是熟悉工作中要用到的API。如果你做界面開發,那麼你需要學習Swing/AWT/SWT等API;如果你進行網路游戲開發,你需要深入了解網路API/多媒體API/2D3D等;如果你做WEB開發,就需要熟悉Servlet等API啦。總之,需要根據工作的需要或你的興趣發展方向去選擇學習特定的API。 1.5 開發工具的用法 在學習基礎語法與基本的面向對象概念時,從鍛煉語言熟練程度的角度考慮,我們推薦使用的工具是Editplus/JCreator+JDK,這時候不要急於上手JBuilder/Eclipse等集成開發環境,以免過於關注IDE的強大功能而分散對JAVA技術本身的注意力。過了這一階段你就可以開始熟悉IDE了。 程序員日常工作包括很多活動,編輯、編譯及構建、調試、單元測試、版本控制、維持模型與代碼同步、文檔的更新等等,幾乎每一項活動都有專門的工具,如果獨立使用這些工具的話,你將會很痛苦,你需要在堆滿工具的任務欄上不斷的切換,效率很低下,也很容易出錯。在JBuilder、Eclipse等IDE中已經自動集成編輯器、編譯器、調試器、單元測試工具JUnit、自動構建工具ANT、版本控制工具CVS、DOC文檔生成與更新等等,甚至可以把UML建模工具也集成進去,又提供了豐富的向導幫助生成框架代碼,讓我們的開發變得更輕松。應該說IDE發展的趨勢就是集成軟體開發中要用到的幾乎所有工具。 從開發效率的角度考慮,使用IDE是必經之路,也是從一個學生到一個職業程序員轉變的里程碑。 JAVA開發使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等幾種;而Eclipse、JBuilder佔有的市場份額是最大的。JBuilder在近幾年來一直是JAVA集成開發環境中的霸主,它是由備受程序員尊敬的Borland公司開發,在硝煙彌漫的JAVA IDE大戰中,以其快速的版本更新擊敗IBM的Visual Age for JAVA等而成就一番偉業。IBM在Visual Age for JAVA上已經無利可圖之下,乾脆將之貢獻給開源社區,成為Eclipse的前身,真所謂"柳暗花明又一村"。浴火重生的Eclipse以其開放式的插件擴展機制、免費開源獲得廣大程序員(包括幾乎所有的骨灰級程序員)的青睞,極具發展潛力。 1.6 學習軟體工程 對小型項目而言,你可能認為軟體工程沒太大的必要。隨著項目的復雜性越來越高,軟體工程的必要性才會體現出來。參見"軟體開發學習路線"小節。 2. 學習要點 確立的學習路線之後,我們還需要總結一下JAVA的學習要點,這些要點在前文多多少少提到過,只是筆者覺得這些地方特別要注意才對它們進行匯總,不要嫌我婆婆媽媽啊。 2.1勤查API文檔 當程序員編寫好某些類,覺得很有成就感,想把它貢獻給各位苦難的同行。這時候你要使用"javadoc"工具(包含在JDK中)生成標準的JAVA DOC文檔,供同行使用。J2SE/J2EE/J2ME的DOC文檔是程序員與程序員交流的工具,幾乎人手一份,除了菜鳥之外。J2SE DOC文檔官方下載地址: http://java.sun.com/j2se/1.5.0/download.jsp ,你可以到google搜索CHM版本下載。也可以在線查看: http://java.sun.com/j2se/1.5.0/docs/api/index.html 。 對待DOC文檔要像毛主席語錄,早上起床念一遍,吃飯睡覺前念一遍。 當需要某項功能的時候,你應該先查相應的DOC文檔看看有沒有現成的實現,有的話就不必勞神費心了直接用就可以了,找不到的時候才考慮自己實現。使用步驟一般如下: ●找特定的包,包一般根據功能組織。 ●找需要使用類,類命名規范的話我們由類的名字可猜出一二。 ●選擇構造器,大多數使用類的方式是創建對象。 ●選擇你需要的方法。 2.2 查書/google->寫代碼測試->查看源代碼->請教別人 當我們遇到問題的時候該如何解決? 這時候不要急著問別人,太簡單的問題,沒經過思考的問題,別人會因此而瞧不起你。可以先找找書,到google中搜一下看看,絕大部分問題基本就解決了。而像"某些類/方法如何使用的問題",DOC文檔就是答案。對某些知識點有疑惑是,寫代碼測試一下,會給你留下深刻的印象。而有的問題,你可能需要直接看API的源代碼驗證你的想法。萬不得已才去請教別人。 2.3學習開源軟體的設計思想 JAVA領域有許多源代碼開放的工具、組件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive論壇、PetStore寵物店等等多如牛毛。這些可是前輩給我們留下的瑰寶呀。入寶山而空手歸,你心甘嗎?對這些工具、框架進行分析,領會其中的設計思想,有朝一日說不定你也能寫一個XXX框架什麼的,風光一把。分析開源軟體其實是你提高技術、提高實戰能力的便捷方法。 2.4 規范的重要性 沒有規矩,不成方圓。這里的規范有兩層含義。第一層含義是技術規范,多到 http://www.jcp.org 下載JSRXXX規范,多讀規范,這是最權威准確最新的教材。第二層含義是編程規范,如果你使用了大量的獨特演算法,富有個性的變數及方法的命名方式;同時,沒給程序作注釋,以顯示你的編程功底是多麼的深厚。這樣的代碼別人看起來像天書,要理解談何容易,更不用說維護了,必然會被無情地掃入垃圾堆。JAVA編碼規范到此查看或下載 http://java.sun.com/docs/codeconv/ ,中文的也有,啊,還要問我在哪,請參考3.2.2節。 2.5 不局限於JAVA 很不幸,很幸運,要學習的東西還有很多。不幸的是因為要學的東西太多且多變,沒時間陪老婆家人或女朋友,導致身心疲憊,嚴重者甚至導致抑鬱症。幸運的是別人要搶你飯碗絕非易事,他們或她們需要付出很多才能達成心願。 JAVA不要孤立地去學習,需要綜合學習數據結構、OOP、軟體工程、UML、網路編程、資料庫技術等知識,用橫向縱
⑺ 完全零基礎學習JAVA用什麼入門書籍
推薦一些對Java學習有用的經典書籍!
1、《thinkingin Java》
如果你是個討厭讀書的人,那麼這本書一定會讓你覺得很有趣。
這內容是否看著就很好理解。
這本書,通俗易懂,重點突出的書,相當適合初學者快速入門,缺點是段子太多,有時候會被當成笑話書來看。
以上推薦的7本Java經典書籍,希望對大家的學習有所幫助。也希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步。
⑻ java關鍵字怎麼背
java關鍵字不需要背的,只需要做到,看到這個單詞你就知道他是關鍵字就行了。這個是需要時間積累的,多看看書,敲敲代碼,時間長了,自然就會一眼看出來了。開始時主要是敲代碼,不會寫沒關系,照著書和視頻去敲,去背。這樣時間長了對自己幫助很大的。thinking in java這本書,建議你有了基礎在去看,因為這本書算比較深奧吧,它適合的人很多,包括初學者、普通者和精通者。所以還是建議你看些初級的視頻吧,馬士兵之類的,電驢上有的。開始時主要是去背,多敲,把別人的整熟了,就變成自己的了。
⑼ 我為什麼把think in java 讀了10遍
要麼是你很牛逼,每讀一遍都能學到新的東西。要麼就是學渣,讀了10遍還是沒看懂。我應該是後者
⑽ thinkphp for循環 java
{$t_bumen[$i]}
這條語句
前後都沒加java語言標識