Ⅰ 關於java學習,有什麼書籍或者教程推薦不啦
你好,如果想學習java,推薦自學。如果覺得自己沒有自製力,可以去報個培育班,那裡有人教,會更好點。至於書的話,有很多的,比如說java編程思想等等,要結合自己的實際需要來選擇,然後就是努力了。祝你學有所成!
Ⅱ 昆明Java培訓:為什麼學習Java開發你知道嗎
大多數人選擇Java可能只是因為聽說Java前景好、Java比較好找工作、Java語言在TIOBE排行榜上一直位於前三等等之類的原因,但是Java具體好在哪裡,心裡卻是沒有什麼概念的。
其實我選擇Java也是出於以上的原因,但是現在確實真正地愛上了Java。
我們為什麼選擇Java!那麼現在我們來分析下Java的好處究竟在哪裡。
簡單易學首先Java是一個面向對象的編程語言,容易理解。
而且略去了多重載入、指針等難以理解的概念。
並且實現了自動垃圾回收,大大簡化了程序設計。
其次Java學習資料較多,網上很多在線學習平台就可以找到很多Java學習視頻,另外也有一些培訓機構提供的有免費的Java視頻課程。
有這些學習資料,入門足矣。
跨平台跨平台是Java最大的優勢。
Java運行在JVM(Java虛擬機)上,在任何平台只要安裝了JVM。
Java就可以運行。
它架構在操作系統之上,屏蔽了底層的差異。
真正實現了「Writeonce,runanywhere」。
安全Java中沒有指針,這樣就沒有辦法直接訪問內存了。
另外Java也不容易出現內存泄露。
多線程Java內置對多線程的支持,可以方便地在程序中實現多線程的功能。
不像其他不支持多線程的語言,需要調用操作系統的多線程功能才能完成多線程的實現。
有豐富的類庫Java從出道至今已有20多年的歷史,經過20多年的積累和沉澱,出現了很多優秀的開源社區,如Apache和Spring。
這些優秀的社區提供了很多非常好的框架,藉助這些框架可以使我們不用去關注Java底層的開發,而只需關注業務的實現。
使用廣泛不得不承認上面有一點是對的,Java確實有很多企業在用,而且都是用在大項目上。
這就意味著Java方面的工作比較好找,另一點是在做Java開發時如果遇到問題,可以很容易從網上找到解決辦法。
職業篇Java初級程序員是最底層的,只需要掌握Java的基礎知識就能夠成為一名初級程序員。
Java程序員可以有三個進階方向,分別是Android移動端開發(以下簡稱Android)、Web開發(以下簡稱Web)和通訊開發。
這時目前主流的三大方向。
其中最多的是Android和Web。
下面分別介紹這三個方向。
以下三個方向都需要有扎實的Java基礎。
Android開發,主攻移動端應用的開發。
移動端包括搭載Android系統的手機、平板、電視盒子等設備。
Web開發方向,主要有HTML5開發、B/S應用開發、微信開發。
這里的HTML5開發是指移動端的HTML5開發。
通訊方向,主要是通訊伺服器的開發,如游戲伺服器、騰訊的QQ伺服器等。
由於我從事Web開發方向,僅僅對其他方向略有了解,所以這里主要介紹Web方向。
要進行Web開發需要達到中級程序員的水平,能夠熟練使用SSH等框架。
而Java高級程序員則需要了解更多的框架和一些常用的應用伺服器,如工作流、搜索引擎、緩存、JTA、JBoss、WebLogic等。
達到高級程序員水平後,很多人在這個階段選擇了不同的方向。
有的人厭倦了編碼和設計而轉向了需求分析和產品經理,而有的人繼續執著於技術這條路,成為了系統架構師。
工具篇子曰「工欲善其事,必先利其器」,有一把順手的「兵器」,能讓我們的學習和工作達到事半功倍的效果,那麼下面我們來看看有哪些好用的工具可以助我們開發。
文本編輯器(適合初學者)這里我們只說Windows平台下的文本編輯器。
有人可能說Windows下的記事本不就可以用嗎,我們為什麼還要用其他的文本編輯器呢?原因嗎,首先記事本確實不好用,修改代碼極為不便,而且有些換行標識不識別;其次效率低,使用記事本打開一個幾K的文件可能沒有什麼感受,但是打開一個超過10M的文件的時候就能明顯的感覺到卡了,比如我們的日誌文件;最後容易出現問題,用記事本編輯過UTF-8格式的文件後,會給文件加上BOM頭,這有時導致程序出現莫名的錯誤,所以作為程序員,最好不要使用記事本。
比較好用的文本編輯器有Editplus、UltraEdit、Notepad。
其中Notepad是開源免費的,其他兩個都是收費的。
IDE(適合入門後和項目研發)IDE是集成開發環境的簡稱,使用IDE的目的是為了能讓我們更快地構建項目、更方便地寫代碼,同時屏蔽了代碼編譯的動作。
IDE都有代碼高亮、代碼提示以及錯誤提示等功能,同時我們可以藉助IDE的插件實現代碼管理、代碼審查和其他一些好用的功能。
常用的IDE有Eclipse、NetBeans和IntelliJIDEA。
前兩者都是免費的,後者提供有社區版本,也是免費的,但是企業版是收費的。
其中Eclipse是用的最多的IDE。
在Eclipse上擴展的有兩款優秀的IDE,SpringToolSuite(STS)和大名鼎鼎的MyEclipse。
前者免費後者收費,後者集成了前者的所有功能。
這里我建議大家使用STS,因為STS添加了很多對Spring的相關支持,如果項目中用到了Spring,使用起來會非常方便。
也可以在Eclipse上安裝STS插件,能夠達到同樣的效果,Spring官網上有插件的安裝方法,這里不再贅述。
技術圖譜以上圖譜詳細描繪了每個級別都需要掌握哪些知識,此圖僅供參考。
在實際工作期間,一般是根據公司需要或項目需要來學習不同的技術。
但還是建議多去學習些知識,我覺得有句話說的很對,「很多東西不是你覺得有用才去學,而是學了才知道它有用」,我一直信奉這句話,因為我就是這句話真正的受益者。
入門篇俗話說「師傅領進門,修行靠個人」,所以說只要入門了,後面學習起來是很快的,而且比較容易。
那麼學習Java應該如何入門呢?首先要理解面向對象的概念,這個很重要。
但也不是說必須完全理解概念才能去學Java。
而是先接觸Java的基礎知識,如類、屬性、方法等。
然後在學習的過程中理解面向對象的概念。
在大概理解了面向對象的概念後,這時你應該學會了一些Java的語法和一些API的使用。
這時需要繼續深入地去學習這些。
同時要養成自己良好的編碼習慣,Java有自己對包名、類名、方法名等的命名規范。
這個時候要嘗試按照規范寫代碼,同時甩掉以前寫代碼時養成的不良習慣。
在熟悉了常用的API及語法後要去學習I/O和流(Stream)以及多線程編程和網路編程。
I/O和輸入輸出流,要熟練掌握。
而在這個階段暫時不需要深入了解多線程編程和網路編程。
在系列基礎完成之後就需要去接觸下資料庫和JDBC,對於資料庫不需要深入了解,能夠創建表、查詢表數據即可。
然後嘗試使用JDBC連接資料庫,並對資料庫中的數據做CURD操作。
在學習Java初期,我建議大家使用文本編輯器來寫代碼,一是有助於記憶Java中的一些關鍵字和常用類及方法,二是可以熟悉Java的常用命令。
在使用了一段時間的文本編輯器後就可以使用IDE來開發了,使用IDE將使你寫代碼寫得更快,也不容易出錯。
基礎是很重要的,雖然簡單,但是也馬虎不得。
這里推薦幾本書《ThinkinginJava》、《Java8編程參考官方教程》等圖書。
中級篇入門後就可以選擇主攻方向了,幾個方向在職業篇中已有介紹。
通訊開發方向其實在這個時候就可以轉了,但是還是建議學習下Java中級的內容,這些內容也有助於你今後在通訊開發的路上走得更容易。
因為我是主攻Web方向,所以這里我們只討論Web方向。
在這個階段你接觸的知識面將更廣,在學習Web開發之前首先需要學習HTML和CSS,然後再學習JS以及jQuery。
在有一定基礎之後就可以開始學習JSP和Servlet了,重點學習下JSP的內置對象及EL表達式,並試著去做一些頁面。
然後學習下Ajax,要能夠熟練的使用JSON和XML來做數據交互。
以上內容學習完之後Java的基礎部分就算是基本掌握了,下面就該學習一些框架了。
建議先從Spring學起,Spring將成為你今後開發項目的核心框架。
Spring也是現在項目中最常用的框架。
可以深入的學習,試著去理解Spring的一些實現原理,這將有助於你更好的使用Spring。
學完Spring之後可以學習下ORM框架,比如Hibernate和MyBatis,這些相對於Spring來說要簡單的多。
主要學習與Spring的整合和Spring中的事務管理。
一定要深入的了解資料庫事務,這將對你今後的項目開發非常有幫助。
最後我們來說控制層的學習,這里我建議大家重點學習SpringMVC。
因為SpringMVC是目前使用最為廣泛的控制層,而且簡單易學,已經有了要替代Struts的趨勢了。
但是Struts還是要學習下,畢竟還有一些公司在用,這將為你找工作加大一點籌碼。
在學習這些內容的過程中一定要學習下代碼管理工具SVN和Git,目前SVN在企業中用的較多,而開源社區一般都是用的Git。
有了JSP基礎和掌握了框架的使用後就可以出去找工作了,在工作過程中這些知識你將掌握的更加牢固。
也可能在工作過程中會遇到你沒有學過的技術,不要怕,有了之前的基礎你將很快掌握這些新的技術,加入工作的第一年將是你進步最快的一年。
而加入工作之後你可能也不會有太多的時間來學習,這時候要約束好自己。
不要忘了學習,學習是最好的進步方式。
高級篇當我們參加了工作之後,開始接觸更多的技術。
如果有機會就多學習些技術,不求精通,但求會用,並且知道這項技術能夠解決什麼問題。
開始在項目中參與設計文檔的編寫。
能夠為自己的項目選擇合適的框架,並且能用自己學到的技術去解決項目中遇到的難題。
這時候根據項目和公司的差異用的技術也不盡相同,但是日誌框架、項目構建、單元測試、緩存、集群、負載均衡、SOAP等是一定要掌握的。
這些是在大型項目中比較常用的技術。
然後可以根據自己的興趣及業余時間去學習自己感興趣的技術。
架構師之路成為一名架構師一直是我的目標。
一名優秀的架構師首先一定是一名卓越的程序員,架構設計不應僅僅是理論,它應當是在實踐中產生的經驗和結果。
架構師也要有靈敏的嗅覺,能夠看清未來技術的發展方向,應當避免在項目中使用已過時的技術或沒有社區支持的技術。
作為一名架構師要掌握以下技能:SOA:在微服務橫行的年代,這項本領是必不可少的。
設計模式:這將有助於你設計出更加優雅的程序。
程序員的區別同樣是程序員,初級、中級與高級的區別在哪裡呢?初級程序員就是傳說中的碼農,依靠復制粘貼、比葫蘆畫瓢的方式完成代碼的編寫,通常一個方法幾百行代碼,恨不得一個類將所有的功能都實現,不考慮程序設計原則,也不考慮程序的執行效率,不考慮SQL注入的問題,更不去想如何能讓我的程序質量更好,他們的目的僅僅是我的程序能夠運行。
很多程序員都會經歷這個階段,而這個階段是最容易養成毛病的階段。
但是有的程序員很快就擺脫了這個階段,也有很多程序員停留在這個階段很長時間,哪怕是掌握了更多的技術,但是這個階段形成的思維模式卻沒有改變,養成的毛病也沒有改掉。
我們就能聽到這樣的聲音「這是哪個傻X寫的代碼,寫的太亂了,還沒有注釋」、「我去!這代碼完全不敢動啊,邏輯太混亂了,牽一發而動全身啊」。
這些基本上都是初級程序員寫的代碼。
中級程序員更喜歡優雅的代碼,而自己寫出優雅的代碼,封裝、繼承、抽象運用自如,能夠獨立完成系統中模塊的開發。
高級程序員能夠完成系統的設計,能夠使用已掌握的技能解決問題。
並且能夠考慮到系統的擴展性、安全性、穩定性等問題。
至於架構師嗎,首先要具備中大型項目的總體規劃和設計經驗,通常架構師考慮的要比高級程序員更多,有時需要考慮到項目的成本、工期、部署環境甚至一些商業因素等,不僅僅是技術上的問題。
其次架構師同樣需要有很好的溝通能力,一是與客戶的溝通,二是與團隊內部純技術的溝通。
很多程序員都止步於中級級別,靠一手SSH技術行天下,而身處初級時養成的毛病仍然存在,有的甚至已經工作5年卻一直是這樣,可塑性極差,由於工作時間長也學會了一手掩蓋問題的好本事,這類人毫不客氣的說就是項目的禍害。
也有一些人達到中級或高級級別後厭倦了編碼,從而轉做需求分析、產品經理或項目經理,在國內做技術確實也很難拿到高工資,這也是很多技術人員轉型的原因。
而我依然堅持我的技術之路,既然選擇了就要堅定的走下去。
總結:通過上面的介紹相信你對於Java有了一個更清晰的認識和了解,如果你對於Java很感興趣,但是不知道從何學起,昆明北大青鳥Java培訓機構節前送福利了,Java免費體驗課開始報名了,大牛老師為你規劃Java學習路線圖,你還擔心學不會嗎?
Ⅲ java學習作為一名java初學者,如何快速學習j
那首先來了解一下什麼是java:
Java是SUN(Stanford University Network,斯坦福大學網路公司)1995年推出的一門高級編程語言,是一種面向Internet的編程語言。隨著Java技術在web方面的不斷成熟,已經成為Web應用程序的首選開發語言。
那麼為什麼要使用這個語言呢,Java語言的特點跨平台性,通過Java語言編寫的應用程序在不同的系統平台上都可以運行。原理是只要在需要運行java應用程序的操作系統上,先安裝一個Java虛擬機(JVM Java Virtual Machine)即可。由JVM來負責Java程序在該系統中的運行。
下面對java學習進行一次史無前例的剖析,細致的講解零基礎的人怎麼學習Java。先看下Java在基礎階段的知識點路線圖。
Ⅳ java基礎入門教程都有哪些
網上教程挺多的,剛剛看了一個九天的Java學習入門教程,通過《學生管理系統》案例整合基礎知識,鞏固加深知識理解。
學習內容:
第一階段:Java基礎語法
Java背景與環境搭建;常量、變數、數據類型;運算符;分支語句;循環語句;數組;方法;二維數組
第二階段:面向對象基礎
面向對象思想理解;類和對象的關系;對象的使用;對象內存圖;this關鍵字;封裝;構造方法;JavaBean類的編寫
第三階段:常用API
API手冊的使用;String類的特點;不同方式創建String對象的區別;字元串常見面試題;字元串常用方法;StringBuilder類的使用;StringBuilder常用方法;String和StringBuilder的區別對比
第四階段:集合框架
集合和數組的對比;ArrayList集合對象的使用;ArrayList集合對象常用方法;ArrayList集合遍歷,與封裝數據到集合;綜合案例 - 學生管理系統
網頁鏈接 912t
Ⅳ 新手如何學好java編程
首先初學者學習Java,應該從最基礎的開始 :
但是在學習的時候不要圖快,要系統的學習一下,或者在了解Java這一門語言是干什麼,有什麼作用之後,在進行相應的學習:
Java基礎:
1.了解Java的發展;
2. 了解Java虛擬機(JVM)基礎知識,如何一次編譯、多處執行;
3.Java程序如何編譯和運行
4. Java中的變數
5. Java數據類型
6. Java運算符
7. Java中的if-else
8. Java中的Switch-Case
9. Java For循環
10。JavaWhile循環
11. Java中的do-while循環
12.do-while循環。Java Continue語句
13. Java Break語句
14、Java 多線程
15、數組
16、集合
17、面向對象三要素
隨後進階學習:
資料庫
目前主流的兩個資料庫一個是MYSQL活Oracle,MYSQL是比較好學的,Oracle的操作要稍微復雜一些,我的建議是這兩個資料庫都必須學。資料庫這塊我認為沒有什麼特別難的。只要多練習就可以。
JavaWeb
這也是Java學習的主要內容,非常重要,包括Web前端的內容,比如HTML、CSS、JavaScript等前端常用基礎。JSP、Server、xml、javabean等技術。
框架
這是Java學習過程中的難點,如果前面的Java的基礎沒有學過,後面的框架很難學,所以學習JavaSE的時候一定要掌握好。目前常用的框架是SSH、SMM、Springboot以及SpringCloud主要框架。學習Java可以上B站搜索我校的官方賬號,高淇老師的Java300集免費觀看!
等等,希望可以給大家帶來幫助!
Ⅵ 如何學習JAVA
如何學習java?
在這里我來為您提供一下Java學習的詳細路線:
這是Java全套系列的學習思維導圖:Java學習思維導圖
高琪老師是我校著名的Java講師,其課程也是受到廣大初學者所喜愛;
如果有的小夥伴想要學Java編程,可以在下方評論領取視頻!有最新的Java課程;
那麼現在來說一下,Java編程初學者應該如何快速入門:
1、按階段規劃,時間留夠,但一定要有互相催促的夥伴,否則會很孤獨也難以堅持,夥伴得挑好了,別把你帶歪了。
2、有了夥伴先學習HTML+CSS,做點網頁出來,讓自己心中對軟體行業充滿成就感,這樣說培養自己的興趣的一種,俗話說興趣是最好的老師,沒有興趣走不遠。
3、然後學習簡單Java語法,寫簡單的流程式控制制語句,簡單數據結構,當邏輯思維和數據結構達到一個3層循環都能搞清楚的水準的時候,馬馬虎虎可以進入下一步了
4、進入Java面向對象的學習,搞清楚類、對象,封裝繼承多態,內部類,對象的概念,然後進入常用集合和泛型以及集合的底層數據結構的學習
5、學習IO流,能夠操作讀取大文件,多線程,Socket編程,學完之後使用JavaSE的基礎做一個五子棋游戲,或者QQ聊天,強化一下自己的知識。
6、進入資料庫學習,先學習MySQL,較為簡單常用,學完資料庫,也可以看看Redis的使用
7、進入JavaWeb課程的學習,以Servlet+Jsp為主,還有tomcat和http基礎,
8、學習JavaScritp+JQuery,結合JavaWeb做一個小的管理系統
9、進入JavaEE的學習,常用框架,主要是SpringMVC和Mybatis,學完之後試著去接觸微服務架構
10、學習linux操作,使用Linux部署tomcat進行環境搭建,跑一個簡單的頁面出來
11、SpringBoot可以進行了解學習,Oracle可以進行了解學習。
最後:最上方詳細的學習線路圖,對比話術更加詳細,希望可以幫助到你們
Ⅶ java初學者的程序
java編程簡單程序
要求:創建4個類
這4個類分別是
a、MessageInputer類,用來循環接收用戶,並將接收的數據保存到Mytext.DF文件中。
b、FillOpterator類,用來將數據寫入文件,及數據從文件中讀取。
c、DBHandle類,用來負責資料庫及獲得資料庫記錄集。
d、MessageCenter類。
把上面四個類組起來,完成下面的功能:
程序給用戶提供一輸入信息界面(文本界面),程序將用戶輸入的信息保存到集合中,
當用戶輸入完畢後,程序將集合中的內容全部保存到Mytext.DF文件中.然後程序提示用戶是
否將數據寫入到資料庫,如果選擇是,則將數據從文件中讀取,並將其保存到Access資料庫。
問題補充:急要原代碼
急要原代碼
急要原代碼
急要原代碼
急要原代碼
提問者:lijugu - 助理 二級
答復 共 3 條
Java初學者需掌握的30個基本概念
基本概念
1.OOP中唯一關系的是對象的介面是什麼,就像計算機的銷售商她不管電源內部結構是怎樣的,他只關系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數調用來完成,對象間所有的交流都是通過方法調用,通過對封裝對象數據,很大限度上提高復用率。
2.OOP中最重要的思想是類,類是模板是藍圖,從類中構造一個對象,即創建了這個類的一個實例(instance)。
3.封裝:就是把數據和行為結合起在一個包中)並對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的實例欄位(instance field)。
4.通過擴展一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴展而得,根超類下文會做介紹。
5.對象的3個主要特性
ehavior---說明這個對象能做什麼。
tate---當對象施加方法時對象的反映。
dentity---與其他相似行為對象的區分標志。
每個對象有唯一的indentity 而這3者之間相互影響。
6.類之間的關系:
use-a :依賴關系
has-a :聚合關系
is-a :繼承關系--例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在於共性中)
7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象並對其初始化。
例:Data類的構造器叫Data
ew Data()---構造一個新對象,且初始化當前時間。
Data happyday=new Data()---把一個對象賦值給一個變數happyday,從而使該對象能夠多次使用,此處要聲明的使變數與對象變數二者
是不同的.new返回的值是一個引用。
構造器特點:構造器可以有0個,一個或多個參數
構造器和類有相同的名字
一個類可以有多個構造器
構造器沒有返回值
構造器總是和new運算符一起使用
8.重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載.編譯器必須挑選出調用哪個方法。
9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便於組織任務,標准Java庫分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內。
10.繼承思想:允許在已經存在的類的基礎上構建新的類,當你繼承一個已經存在的類時,那麼你就復用了這個類的方法和欄位,同時你可以在新類中添加新的方法和欄位。
11.擴展類:擴展類充分體現了is-a的繼承關系. 形式為:class (子類) extends (基類)。
12.多態:在java中,對象變數是多態的.而java中不支持多重繼承。 13.動態綁定:調用對象方法的機制。
1)編譯器檢查對象聲明的類型和方法名。
2)編譯器檢查方法調用的參數類型。
3)靜態綁定:若方法類型為priavte static final 編譯器會准確知道該調用哪個方法。
4)當程序運行並且使用動態綁定來調用一個方法時,那麼虛擬機必須調用x所指向的對象的實際類型相匹配的方法版本。
5)動態綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。
14.final類:為防止他人從你的類上派生新類,此類是不可擴展的。
15.動態調用比靜態調用花費的時間要長。
16.抽象類:規定一個或多個抽象方法的類本身必須定義為abstract。
例: public abstract string getDescripition
17.Java中的每一個類都是從Object類擴展而來的。
18.object類中的equal和toString方法。
equal用於測試一個對象是否同另一個對象相等。
toString返回一個代表該對象的字元串,幾乎每一個類都會重載該方法,以便返回當前狀態的正確表示。
(toString 方法是一個很重要的方法)
19.通用編程:任何類類型的所有值都可以同object類性的變數來代替。
20.數組列表:ArrayList動態數組列表,是一個類庫,定義在java.uitl包中,可自動調節數組的大小。
21.class類 object類中的getclass方法返回ckass類型的一個實例,程序啟動時包含在main方法的類會被載入,虛擬機要載入他需要的所有類,每一個載入的類都要載入它需要的類。
22.class類為編寫可動態操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具。
能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大。
1)在運行時分析類的能力。
2)在運行時探察類的對象。
3)實現通用數組操縱代碼。
4)提供方法對象。
而此機制主要針對是工具者而不是應用及程序。
反射機制中的最重要的部分是允許你檢查類的結構.用到的API有:
java.lang.reflect.Field 返回欄位。
java.reflect.Method 返回方法。
java.lang.reflect.Constructor 返回參數。
方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在後面調用它,而介面是更好的解決方案。
23.介面(Interface)說明類該做什麼而不指定如何去做,一個類可以實現一個或多個interface。
24.介面不是一個類,而是對符合介面要求的類的一套規范。
若實現一個介面需要2個步驟:
1)聲明類需要實現的指定介面。
2)提供介面中的所有方法的定義。
聲明一個類實現一個介面需要使用implements 關鍵字
class actionB implements Comparable 其actionb需要提供CompareTo方法,介面不是類,不能用new實例化一個介面。
25.一個類只有一個超類,但一個類能實現多個介面。Java中的一個重要介面:Cloneable
26.介面和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發生時回調對象上的方法。
例:ActionListener 介面監聽。
類似的API有:
java.swing.JOptionPane
java.swing.Timer
java.awt.Tookit
27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調用它。
28.內部類:一個內部類的定義是定義在另一個內部的類。
原因是:
1)一個內部類的對象能夠訪問創建它的對象的實現,包括私有數據。
2)對於同一個包中的其他類來說,內部類能夠隱藏起來。
3)匿名內部類可以很方便的定義回調。
4)使用內部類可以非常方便的編寫事件驅動程序。
29.代理類(proxy):
1)指定介面要求所有代碼
2)object類定義的所有的方法(toString equals)
30.數據類型:Java是強調類型的語言,每個變數都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字元型,被用於Unicode編碼中的字元,布爾型。
回答者:ajian026 - 見習魔法師 二級 3-27 16:28
--------------------------------------------------------------------------------
Java初學者需掌握的30個基本概念
基本概念
1.OOP中唯一關系的是對象的介面是什麼,就像計算機的銷售商她不管電源內部結構是怎樣的,他只關系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數調用來完成,對象間所有的交流都是通過方法調用,通過對封裝對象數據,很大限度上提高復用率。
2.OOP中最重要的思想是類,類是模板是藍圖,從類中構造一個對象,即創建了這個類的一個實例(instance)。
3.封裝:就是把數據和行為結合起在一個包中)並對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的實例欄位(instance field)。
4.通過擴展一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴展而得,根超類下文會做介紹。
5.對象的3個主要特性
ehavior---說明這個對象能做什麼。
tate---當對象施加方法時對象的反映。
dentity---與其他相似行為對象的區分標志。
每個對象有唯一的indentity 而這3者之間相互影響。
6.類之間的關系:
use-a :依賴關系
has-a :聚合關系
is-a :繼承關系--例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在於共性中)
7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象並對其初始化。
例:Data類的構造器叫Data
ew Data()---構造一個新對象,且初始化當前時間。
Data happyday=new Data()---把一個對象賦值給一個變數happyday,從而使該對象能夠多次使用,此處要聲明的使變數與對象變數二者
是不同的.new返回的值是一個引用。
構造器特點:構造器可以有0個,一個或多個參數
構造器和類有相同的名字
一個類可以有多個構造器
構造器沒有返回值
構造器總是和new運算符一起使用
8.重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載.編譯器必須挑選出調用哪個方法。
9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便於組織任務,標准Java庫分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內。
10.繼承思想:允許在已經存在的類的基礎上構建新的類,當你繼承一個已經存在的類時,那麼你就復用了這個類的方法和欄位,同時你可以在新類中添加新的方法和欄位。
11.擴展類:擴展類充分體現了is-a的繼承關系. 形式為:class (子類) extends (基類)。
12.多態:在java中,對象變數是多態的.而java中不支持多重繼承。 13.動態綁定:調用對象方法的機制。
1)編譯器檢查對象聲明的類型和方法名。
2)編譯器檢查方法調用的參數類型。
3)靜態綁定:若方法類型為priavte static final 編譯器會准確知道該調用哪個方法。
4)當程序運行並且使用動態綁定來調用一個方法時,那麼虛擬機必須調用x所指向的對象的實際類型相匹配的方法版本。
5)動態綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。
14.final類:為防止他人從你的類上派生新類,此類是不可擴展的。
15.動態調用比靜態調用花費的時間要長。
16.抽象類:規定一個或多個抽象方法的類本身必須定義為abstract。
例: public abstract string getDescripition
17.Java中的每一個類都是從Object類擴展而來的。
18.object類中的equal和toString方法。
equal用於測試一個對象是否同另一個對象相等。
toString返回一個代表該對象的字元串,幾乎每一個類都會重載該方法,以便返回當前狀態的正確表示。
(toString 方法是一個很重要的方法)
19.通用編程:任何類類型的所有值都可以同object類性的變數來代替。
20.數組列表:ArrayList動態數組列表,是一個類庫,定義在java.uitl包中,可自動調節數組的大小。
21.class類 object類中的getclass方法返回ckass類型的一個實例,程序啟動時包含在main方法的類會被載入,虛擬機要載入他需要的所有類,每一個載入的類都要載入它需要的類。
22.class類為編寫可動態操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具。
能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大。
1)在運行時分析類的能力。
2)在運行時探察類的對象。
3)實現通用數組操縱代碼。
4)提供方法對象。
而此機制主要針對是工具者而不是應用及程序。
反射機制中的最重要的部分是允許你檢查類的結構.用到的API有:
java.lang.reflect.Field 返回欄位。
java.reflect.Method 返回方法。
java.lang.reflect.Constructor 返回參數。
方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在後面調用它,而介面是更好的解決方案。
23.介面(Interface)說明類該做什麼而不指定如何去做,一個類可以實現一個或多個interface。
24.介面不是一個類,而是對符合介面要求的類的一套規范。
若實現一個介面需要2個步驟:
1)聲明類需要實現的指定介面。
2)提供介面中的所有方法的定義。
聲明一個類實現一個介面需要使用implements 關鍵字
class actionB implements Comparable 其actionb需要提供CompareTo方法,介面不是類,不能用new實例化一個介面。
25.一個類只有一個超類,但一個類能實現多個介面。Java中的一個重要介面:Cloneable
26.介面和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發生時回調對象上的方法。
例:ActionListener 介面監聽。
類似的API有:
java.swing.JOptionPane
java.swing.Timer
java.awt.Tookit
27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調用它。
28.內部類:一個內部類的定義是定義在另一個內部的類。
原因是:
1)一個內部類的對象能夠訪問創建它的對象的實現,包括私有數據。
2)對於同一個包中的其他類來說,內部類能夠隱藏起來。
3)匿名內部類可以很方便的定義回調。
4)使用內部類可以非常方便的編寫事件驅動程序。
29.代理類(proxy):
1)指定介面要求所有代碼
2)object類定義的所有的方法(toString equals)
30.數據類型:Java是強調類型的語言,每個變數都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字元型,被用於Unicode編碼中的字元,布爾型
回答者:83071706 - 魔法學徒 一級 3-27 16:39
--------------------------------------------------------------------------------
數據類型:Java是強調類型的語言,每個變數都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字元型,被用於Unicode編碼中的字元,布爾型
Ⅷ 求JAVA新手教程
Java新手入門的30個基本概念
在我們學習Java的過程中,掌握其中的基本概念對我們的學習無論是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基礎,所以有必要對其中的基本概念做以歸納,以便大家在以後的學習過程中更好的理解java的精髓,在此我總結了30條基本的概念。
Java概述:
目前Java主要應用於中間件的開發(middleware)---處理客戶機於伺服器之間的通信技術,早期的實踐證明,Java不適合pc應用程序的開發,其發展逐漸變成在開發手持設備,互聯網信息站,及車載計算機的開發.Java於其他語言所不同的是程序運行時提供了平台的獨立性,稱許可以在windows,solaris,linux其他操作系統上使用完全相同的代碼.Java的語法與C++語法類似,C++/C程序員很容易掌握,而且Java是完全的徹底的面向對象的,其中提出了很好的GC(Garbage Collector)垃圾處理機制,防止內存溢出。
Java的白皮書為我們提出了Java語言的11個關鍵特性。
(1)Easy:Java的語法比C++的相對簡單,另一個方面就是Java能使軟體在很小的機器上運行,基礎解釋其和類庫的支持的大小約為40kb,增加基本的標准庫和線程支持的內存需要增加125kb。
(2)分布式:Java帶有很強大的TCP/IP協議族的常式庫,Java應用程序能夠通過URL來穿過網路來訪問遠程對象,由於servlet機制的出現,使Java編程非常的高效,現在許多的大的web server都支持servlet。
(3)OO:面向對象設計是把重點放在對象及對象的介面上的一個編程技術.其面向對象和C++有很多不同,在與多重繼承的處理及Java的原類模型。
(4)健壯特性:Java採取了一個安全指針模型,能減小重寫內存和數據崩潰的可能型。
(5)安全:Java用來設計網路和分布系統,這帶來了新的安全問題,Java可以用來構建防病毒和防攻擊的System.事實證明Java在防毒這一方面做的比較好。
(6)中立體系結構:Java編譯其生成體系結構中立的目標文件格式可以在很多處理器上執行,編譯器產生的指令位元組碼(Javabytecode)實現此特性,此位元組碼可以在任何機器上解釋執行。
(7)可移植性:Java中對基本數據結構類型的大小和演算法都有嚴格的規定所以可移植性很好。
(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現交給底下操作系統或線程程序完成.所以多線程是Java作為伺服器端開發語言的流行原因之一。
(9)Applet和servlet:能夠在網頁上執行的程序叫Applet,需要支持Java的瀏覽器很多,而applet支持動態的網頁,這是很多其他語言所不能做到的。
基本概念:
1.OOP中唯一關系的是對象的介面是什麼,就像計算機的銷售商她不管電源內部結構是怎樣的,他只關系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數調用來完成,對象間所有的交流都是通過方法調用,通過對封裝對象數據,很大限度上提高復用率。
2.OOP中最重要的思想是類,類是模板是藍圖,從類中構造一個對象,即創建了這個類的一個實例(instance)。
3.封裝:就是把數據和行為結合起在一個包中)並對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的實例欄位(instance field)。
4.通過擴展一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴展而得,根超類下文會做介紹。
5.對象的3個主要特性
behavior---說明這個對象能做什麼.
state---當對象施加方法時對象的反映.
identity---與其他相似行為對象的區分標志.
每個對象有唯一的indentity 而這3者之間相互影響.
6.類之間的關系:
use-a :依賴關系
has-a :聚合關系
is-a :繼承關系--例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在於共性中)
7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象並對其初始化。
例:Data類的構造器叫Data
new Data()---構造一個新對象,且初始化當前時間.
Data happyday=new Data()---把一個對象賦值給一個變數happyday,從而使該對象能夠多次使用,此處要聲明的使變數與對象變數二者是不同的.new返回的值是一個引用。
構造器特點:構造器可以有0個,一個或多個參數
構造器和類有相同的名字
一個類可以有多個構造器
構造器沒有返回值
構造器總是和new運算符一起使用.
8.重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載.編譯器必須挑選出調用哪個方法。
9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便於組織任務,標准Java庫分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內。
10.繼承思想:允許在已經存在的類的基礎上構建新的類,當你繼承一個已經存在的類時,那麼你就復用了這個類的方法和欄位,同時你可以在新類中添加新的方法和欄位。
11.擴展類:擴展類充分體現了is-a的繼承關系. 形式為:class (子類) extends (基類)。
12.多態:在java中,對象變數是多態的.而java中不支持多重繼承。
13.動態綁定:調用對象方法的機制。
(1)編譯器檢查對象聲明的類型和方法名。
(2)編譯器檢查方法調用的參數類型。
(3)靜態綁定:若方法類型為priavte static final 編譯器會准確知道該調用哪個方法。
(4)當程序運行並且使用動態綁定來調用一個方法時,那麼虛擬機必須調用x所指向的對象的實際類型相匹配的方法版本。
(5)動態綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。
14.final類:為防止他人從你的類上派生新類,此類是不可擴展的。
15.動態調用比靜態調用花費的時間要長。
16.抽象類:規定一個或多個抽象方法的類本身必須定義為abstract。
例: public abstract string getDescripition
17.Java中的每一個類都是從Object類擴展而來的。
18.object類中的equal和toString方法。
equal用於測試一個對象是否同另一個對象相等。
toString返回一個代表該對象的字元串,幾乎每一個類都會重載該方法,以便返回當前狀態的正確表示.
(toString 方法是一個很重要的方法)
19.通用編程:任何類類型的所有值都可以同object類性的變數來代替。
20.數組列表:ArrayList動態數組列表,是一個類庫,定義在java.uitl包中,可自動調節數組的大小。
21.class類 object類中的getclass方法返回ckass類型的一個實例,程序啟動時包含在main方法的類會被載入,虛擬機要載入他需要的所有類,每一個載入的類都要載入它需要的類。
22.class類為編寫可動態操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具。
能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大.
1.在運行時分析類的能力。
2.在運行時探察類的對象。
3.實現通用數組操縱代碼。
4.提供方法對象。
而此機制主要針對是工具者而不是應用及程序。
反射機制中的最重要的部分是允許你檢查類的結構.用到的API有:
java.lang.reflect.Field 返回欄位.
java.reflect.Method 返回方法.
java.lang.reflect.Constructor 返回參數.
方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在後面調用它,而介面是更好的解決方案。
23.介面(Interface)說明類該做什麼而不指定如何去做,一個類可以實現一個或多個interface。
24.介面不是一個類,而是對符合介面要求的類的一套規范。
若實現一個介面需要2個步驟:
1.聲明類需要實現的指定介面。
2.提供介面中的所有方法的定義。
聲明一個類實現一個介面需要使用implements 關鍵字
class actionB implements Comparable 其actionb需要提供CompareTo方法,介面不是類,不能用new實例化一個介面.
25.一個類只有一個超類,但一個類能實現多個介面。Java中的一個重要介面:Cloneable
26.介面和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發 生時回調對象上的方法。
例:ActionListener 介面監聽.
類似的API有:java.swing.JOptionPane
java.swing.Timer
java.awt.Tookit
27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調用它。
28.內部類:一個內部類的定義是定義在另一個內部的類。
原因是:
1.一個內部類的對象能夠訪問創建它的對象的實現,包括私有數據。
2.對於同一個包中的其他類來說,內部類能夠隱藏起來。
3.匿名內部類可以很方便的定義回調。
4.使用內部類可以非常方便的編寫事件驅動程序。
29.代理類(proxy):
1.指定介面要求所有代碼
2.object類定義的所有的方法(toString equals)
30.數據類型:Java是強調類型的語言,每個變數都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字元型,被用於Unicode編碼中的字元,布爾型。
一、入門
《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》- 推薦*
頁面功能 【加入收藏】 【推薦給朋友】 【字體:大 中 小】 【關閉】
java編程規范-
作者:佚名 來自:未知
命名規范
定義這個規范的目的是讓項目中所有的文檔都看起來像一個人寫的,增加可讀性,減少項目組中因為換人而帶來的損失。(這些規范並不是一定要絕對遵守,但是一定要讓程序有良好的可讀性)
Package 的命名
Package 的名字應該都是由一個小寫單片語成。
Class 的命名
Class 的名字必須由大寫字母開頭而其他字母都小寫的單片語成
Class 變數的命名
變數的名字必須用一個小寫字母開頭。後面的單詞用大寫字母開頭。
Static Final 變數的命名
Static Final 變數的名字應該都大寫,並且指出完整含義。
參數的命名
參數的名字必須和變數的命名規范一致。
數組的命名
數組應該總是用下面的方式來命名:
byte[] buffer;
而不是:
byte buffer[];
方法的參數
使用有意義的參數命名,如果可能的話,使用和要賦值的欄位一樣的名字:
SetCounter(int size){
this.size = size;
}
Java 文件樣式
所有的 Java(*.java) 文件都必須遵守如下的樣式規則
版權信息
版權信息必須在 java 文件的開頭,比如:
/**
* Copyright ? 2000 Shanghai XXX Co. Ltd.
* All right reserved.
*/
其他不需要出現在 javadoc 的信息也可以包含在這里。
Package/Imports
package 行要在 import 行之前,import 中標準的包名要在本地的包名之前,而且按照字母順序排列。如果 import 行中包含了同一個包中的不同子目錄,則應該用 * 來處理。
package hotlava.net.stats;
import java.io.*;
import java.util.Observable;
import hotlava.util.Application;
這里 java.io.* 使用來代替InputStream and OutputStream 的。
Class
接下來的是類的注釋,一般是用來解釋類的。
/**
* A class representing a set of packet and byte counters
* It is observable to allow it to be watched, but only
* reports changes when the current set is complete
*/
接下來是類定義,包含了在不同的行的 extends 和 implements
public class CounterSet
extends Observable
implements Cloneable
Class Fields
接下來是類的成員變數:
/**
* Packet counters
*/
protected int[] packets;
public 的成員變數必須生成文檔(JavaDoc)。Proceted、private和 package 定義的成員變數如果名字含義明確的話,可以沒有注釋。
存取方法
接下來是類變數的存取的方法。它只是簡單的用來將類的變數賦值獲取值的話,可以簡單的寫在一行上。
/**
* Get the counters
* @return an array containing the statistical data. This array has been
* freshly allocated and can be modified by the caller.
*/
public int[] getPackets() { return Array(packets, offset); }
public int[] getBytes() { return Array(bytes, offset); }
public int[] getPackets() { return packets; }
public void setPackets(int[] packets) { this.packets = packets; }
其它的方法不要寫在一行上
構造函數
接下來是構造函數,它應該用遞增的方式寫(比如:參數多的寫在後面)。
訪問類型 ('public', 'private' 等.) 和 任何 'static', 'final' 或 'synchronized' 應該在一行中,並且方法和參數另寫一行,這樣可以使方法和參數更易讀。
public
CounterSet(int size){
this.size = size;
}
克隆方法
如果這個類是可以被克隆的,那麼下一步就是 clone 方法:
public
Object clone() {
try {
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
obj.size = size;
return obj;
}catch(CloneNotSupportedException e) {
throw new InternalError('Unexpected CloneNotSUpportedException: ' + e.getMessage());
}
}
類方法
下面開始寫類的方法:
/**
* Set the packet counters
* (such as when restoring from a database)
*/
protected final
void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException
{
//
// Ensure the arrays are of equal size
//
if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
throw new IllegalArgumentException('Arrays must be of the same size');
System.array(r1, 0, r3, 0, r1.length);
System.array(r2, 0, r4, 0, r1.length);
}
toString 方法
無論如何,每一個類都應該定義 toString 方法:
public
String toString() {
String retval = 'CounterSet: ';
for (int I = 0; I < data.length(); i++) {
retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
}
}
main 方法
如果main(String[]) 方法已經定義了, 那麼它應該寫在類的底部.
代碼編寫格式
代碼樣式
代碼應該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換行)
文檔化
必須用 javadoc 來為類生成文檔。不僅因為它是標准,這也是被各種 java 編譯器都認可的方法。使用 @author 標記是不被推薦的,因為代碼不應該是被個人擁有的。
縮進
縮進應該是每行2個空格. 不要在源文件中保存Tab字元. 在使用不同的源代碼管理工具時Tab字元將因為用戶設置的不同而擴展為不同的寬度.
如果你使用 UltrEdit 作為你的 Java 源代碼編輯器的話,你可以通過如下操作來禁止保存Tab字元, 方法是通過 UltrEdit中先設定 Tab 使用的長度室2個空格,然後用 Format|Tabs to Spaces 菜單將 Tab 轉換為空格。
頁寬
頁寬應該設置為80字元. 源代碼一般不會超過這個寬度, 並導致無法完整顯示, 但這一設置也可以靈活調整. 在任何情況下, 超長的語句應該在一個逗號或者一個操作符後折行. 一條語句折行後, 應該比原來的語句再縮進2個字元.
{} 對
{} 中的語句應該單獨作為一行. 例如, 下面的第1行是錯誤的, 第2行是正確的:
if (i>0) { I ++ }; // 錯誤, { 和 } 在同一行
if (i>0) {
I ++
}; // 正確, { 單獨作為一行
} 語句永遠單獨作為一行.
如果 } 語句應該縮進到與其相對應的 { 那一行相對齊的位置。
括弧
左括弧和後一個字元之間不應該出現空格, 同樣, 右括弧和前一個字元之間也不應該出現空格. 下面的例子說明括弧和空格的錯誤及正確使用:
CallProc( Aparameter ); // 錯誤
CallProc(Aparameter); // 正確
不要在語句中使用無意義的括弧. 括弧只應該為達到某種目的而出現在源代碼中。下面的例子說明錯誤和正確的用法:
if ((I) = 42) { // 錯誤 - 括弧毫無意義
if (I == 42) or (J == 42) then // 正確 - 的確需要括弧
程序編寫規范
exit()
exit 除了在 main 中可以被調用外,其他的地方不應該調用。因為這樣做不給任何代碼代碼機會來截獲退出。一個類似後台服務地程序不應該因為某一個庫模塊決定了要退出就退出。
異常
申明的錯誤應該拋出一個RuntimeException或者派生的異常。
頂層的main()函數應該截獲所有的異常,並且列印(或者記錄在日誌中)在屏幕上。
垃圾收集
JAVA使用成熟的後台垃圾收集技術來代替引用計數。但是這樣會導致一個問題:你必須在使用完對象的實例以後進行清場工作。比如一個prel的程序員可能這么寫:
…
{
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, 'IDE Project File');
}
…
除非輸出流一出作用域就關閉,非引用計數的程序語言,比如JAVA,是不能自動完成變數的清場工作的。必須象下面一樣寫:
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, 'IDE Project File');
fos.close();
Clone
下面是一種有用的方法:
implements Cloneable
public
Object clone()
{
try {
ThisClass obj = (ThisClass)super.clone();
obj.field1 = (int[])field1.clone();
obj.field2 = field2;
return obj;
} catch(CloneNotSupportedException e) {
throw new InternalError('Unexpected CloneNotSUpportedException: ' + e.getMessage());
}
}
final 類
絕對不要因為性能的原因將類定義為 final 的(除非程序的框架要求)
如果一個類還沒有準備好被繼承,最好在類文檔中註明,而不要將她定義為 final 的。這是因為沒有人可以保證會不會由於什麼原因需要繼承她。
訪問類的成員變數
大部分的類成員變數應該定義為 protected 的來防止繼承類使用他們。
注意,要用'int[] packets',而不是'int packets[]',後一種永遠也不要用。
public void setPackets(int[] packets) { this.packets = packets; }
CounterSet(int size)
{
this.size = size;
}
編程技巧
byte 數組轉換到 characters
為了將 byte 數組轉換到 characters,你可以這么做:
'Hello world!'.getBytes();
Utility 類
Utility 類(僅僅提供方法的類)應該被申明為抽象的來防止被繼承或被初始化。
初始化
下面的代碼是一種很好的初始化數組的方法:
objectArguments = new Object[] { arguments };
枚舉類型
JAVA 對枚舉的支持不好,但是下面的代碼是一種很有用的模板:
class Colour {
public static final Colour BLACK = new Colour(0, 0, 0);
public static final Colour RED = new Colour(0xFF, 0, 0);
public static final Colour GREEN = new Colour(0, 0xFF, 0);
public static final Colour BLUE = new Colour(0, 0, 0xFF);
public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);
}
這種技術實現了RED, GREEN, BLUE 等可以象其他語言的枚舉類型一樣使用的常量。 他們可以用 == 操作符來比較。
但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創建顏色 BLACK
new Colour(0,0,0)
那麼這就是另外一個對象,==操作符就會產生錯誤。她的 equal() 方法仍然有效。由於這個原因,這個技術的缺陷最好註明在文檔中,或者只在自己的包中使用。
Swing
避免使用 AWT 組件
混合使用 AWT 和 Swing 組件
如果要將 AWT 組件和 Swing 組件混合起來使用的話,請小心使用。實際上,盡量不要將他們混合起來使用。
滾動的 AWT 組件
AWT 組件絕對不要用 JscrollPane 類來實現滾動。滾動 AWT 組件的時候一定要用 AWT ScrollPane 組件來實現。
避免在 InternalFrame 組件中使用 AWT 組件
盡量不要這么做,要不然會出現不可預料的後果。
Z-Order 問題
AWT 組件總是顯示在 Swing 組件之上。當使用包含 AWT 組件的 POP-UP 菜單的時候要小心,盡量不要這樣使用。
調試
調試在軟體開發中是一個很重要的部分,存在軟體生命周期的各個部分中。調試能夠用配置開、關是最基本的。
很常用的一種調試方法就是用一個 PrintStream 類成員,在沒有定義調試流的時候就為 null,類要定義一個 debug 方法來設置調試用的流。
性能
在寫代碼的時候,從頭至尾都應該考慮性能問題。這不是說時間都應該浪費在優化代碼上,而是我們時刻應該提醒自己要注意代碼的效率。比如:如果沒有時間來實現一個高效的演算法,那麼我們應該在文檔中記錄下來,以便在以後有空的時候再來實現她。
不是所有的人都同意在寫代碼的時候應該優化性能這個觀點的,他們認為性能優化的問題應該在項目的後期再去考慮,也就是在程序的輪廓已經實現了以後。
不必要的對象構造
不要在循環中構造和釋放對象
Ⅸ java怎樣快速入門
零基礎如何學好Java語言編程?作為一個Java初學者,怎樣從一個新手快速入門?這是很多想學Java的新手最關心的問題。今天在這篇文章里我就來詳細解答一下這些問題。
為什麼要學Java
首先,你要想明白自己為什麼要學Java?只是一種興趣愛好,還是為了將來的謀生。或者是因為學習Java的都有一個高薪吸引才學習Java。自己要有一個大概的學習方向、思路。相信目前很多人學習java是因為功利性,即聽說了這個行業的高薪,不要否認。那麼恭喜你,你有了學習java的第一個前提條件,利益激發主動。其實,學習java並不需要所謂的數學邏輯好,需要英語水平棒。告訴你,正常人的智商就足夠了。月薪2K的從事者智商並不會比月薪20K的差,區別只在於,前者不曾學習,後者把學習當成生活的一部分,比如在樂位元組學習的那些同學們。
其次,你要了解Java需要學習哪些知識。這里我分享一份Java的學習路線。作為剛接觸Java的新手,先了解Java的基礎。Java 基本語法、Java 平台應用、Java的核心概念:JVM、JDK、JRE以及Java面向對象思想,同時要會學到如何在系統中搭建Java開發環境,以及如何利用第三方工具進行Java程序的開發。
還有記住學習Java語言最重要的是兩點:
學習步驟/方法
學習資源
找到適合自己的學習方式。找到適合自己現階段的學習資料。學習的過程中最好記筆記,因為好記性不如爛筆頭。在學習Java語言最基礎的知識到Java進階設計階段,要了解常用的設計模式以及Java語言的實現實例來學習Java設計模式。從中我們可以學習到很多類型的設計模式,其中包括工廠模式、抽象工廠模式、單例模式、適配器模式、觀察者模式、裝飾者模式等等。
學習Java的基本路徑就是,首先建立好開發環境。建立起來環境了,最重要的是練習,熟能生巧,在不斷的練習中去加深自己對程序語言的理解。作為新手你可以去找一本比較好的經典的入門書籍,現在網路上也有非常多的資料,圖文或者視頻都可以,根據個人喜好選擇來練習。
做Java開發的話,你需要了解這三個術語,叫SDK、API跟Lib,分別表示軟體開發套件,應用編程介面和庫。這三者之間其實有一定的聯系,或者是交叉。
總體來說,它們都是給我們提供的一些封裝了底層功能的基礎設施。這些東西通常體現為我們所經常說的「框架」。事實上要成為一個資深的Java開發者,對各種API和框架的學習,可能是花時間最多的一個地方。
學習Java,首先完成 Java基礎、JDK、JDBC、正則表達式等基礎實驗,然後進階到 J2SE 和 SSH 框架學習。Java Web全棧開發的推薦學習內容,簡單總結一下,大概包括下面這些內容。每一部分都可以細化成很多知識點,這只是一個粗略的羅列。把它當做技術地圖就好了。
開發環境的建立與項目管理:Eclipse、IntelliJIDEA、Maven和Git.
Java編程基礎:基本語法、面向對象特性、Java8新特性、更高級庫(比如Guava)的使用等。
前端開發技術:HTML、CSS、Bootstrap和JavaScript基礎。
Spring基礎:依賴注入IoC、面向切面編程AOP、SpringBoot.
MVC框架:Spring MVC、Struts等,包括URL路由、模板、表單、Session、攔截器等知識。
數據訪問:關系型資料庫、JDBC、Spring JDBC、事務、ORM框架(MyBatis,Hibernate、JPA)。
成熟應用的關鍵功能實現:郵件發送、非同步任務、緩存、日誌等應用的測試和部署。
還有專門提一下JSP和Servlet,雖然現在各種成熟的MVC框架已經讓Java Web開發基本很少使用JSP和Servlet的原生功能了,基本都做了一層封裝。但是這部分基礎知識建議初學者還是要認真學習。
最後我說一點,程序猿這門職業是個不斷學習的職業。每天都有新技術,雖然不一定都能用上,但是還是要每天學習。Java自己核心的一些包和技術無非是:集合,泛型,IO,多線程,類載入機制,反射,代理。掌握這些,Java就算入門了。初學者從Java零基礎快速入門學好Java語言。初學者最重要的就是不要懶!