第一篇:java基礎(chǔ)知識(shí)部分
問題一:List和Set集合有什么區(qū)別?
解析:List和Set是Collection接口的兩個(gè)子接口,也是使用最多的兩種集合類型。程序員應(yīng)該熟悉這兩個(gè)接口的基本特征,能夠更準(zhǔn)確地選擇正確的集合類型。參考答案:List實(shí)現(xiàn)了列表類型的集合,List中的元素是有序(ordered)的,每個(gè)元素根據(jù)放入集合的順序而對(duì)應(yīng)一個(gè)索引值,可以根據(jù)這個(gè)索引值返回集合原宿。而Set實(shí)現(xiàn)了不重復(fù)元素集合,即Set中的元素不能夠重復(fù),重復(fù)的元素將無法添加到集合中。
問題二:使用java語(yǔ)言如何創(chuàng)建線程對(duì)象?
請(qǐng)列出常用的兩種方法。解析:Java 語(yǔ)言能夠支持多線程編程,將線程封裝成Thread類型的對(duì)象,只要?jiǎng)?chuàng)建Thread類型的對(duì)象,就能夠便捷地啟動(dòng)線程、執(zhí)行線程體。程序員首先必須掌握創(chuàng)建線程的常用方法。參考答案:Java語(yǔ)言中經(jīng)常使用兩種方法創(chuàng)建線程。①創(chuàng)建Thread類的子類,在子類中覆蓋Thread類的run方法,實(shí)現(xiàn)線程的運(yùn)行體,只要?jiǎng)?chuàng)建該子類對(duì)象就是線程對(duì)象。②創(chuàng)建Runable接口的實(shí)現(xiàn)類,在實(shí)現(xiàn)類中覆蓋接口中的run方法,實(shí)現(xiàn)線程的運(yùn)行體。使用Thread(Runable)構(gòu)造方法可以創(chuàng)建線程對(duì)象,參數(shù)是Runable接口實(shí)現(xiàn)類的實(shí)例。
問題三:sleep()和 wait()有什么區(qū)別?
sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒有被調(diào)度為放棄執(zhí)行,除非(a)“醒來”的線程具有更高的優(yōu)先級(jí),(b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?。wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,釋放當(dāng)前線程鎖定的任何對(duì)象。進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。問題四:final類與final方法有什么作用?
解析:final修飾符是一個(gè)用途非常廣泛的修飾符,可以修飾類,方法,以及屬性。參考答案:final類是不能夠被繼承的類,稱為終極類,如String類就是final類,不能有 子類。final修飾方法后,是終極方法,不能被子類覆蓋,但是可以被子類繼承使用。問題五:String類和StringBuffer類有什么區(qū)別?
解析:JAVA平臺(tái)提供了兩個(gè)類:String和StringBuffer,它們可以儲(chǔ)存和操作字符串,即包含多個(gè)字符的字符數(shù)據(jù)。這個(gè)String類提供了數(shù)值不可改變的字符串。而這個(gè)StringBuffer類提供的字符串進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動(dòng)態(tài)構(gòu)造字符數(shù)據(jù)。
第二篇:java程序員基礎(chǔ)知識(shí)
目前,JAVA是開發(fā)人員的熱寵,很多論壇都有不少熱愛JAVA的開發(fā)人員,也有不少想成為JAVA程序員,但苦于不知道該如何學(xué)習(xí),也不清楚該學(xué)些什么知識(shí)才能成為一個(gè)JAVA程序員。本人在這里拋磚引玉,和大家討論成為一個(gè)JAVA初級(jí)程序員應(yīng)該具有的知識(shí),與大家共享。
個(gè)人認(rèn)為想成為一個(gè)合格的JAVA初級(jí)程序員應(yīng)該具備如下知識(shí):
一、面向?qū)ο蟮闹R(shí):JAVA是一個(gè)面向?qū)ο蟮拈_發(fā)語(yǔ)言,因此熟悉面向?qū)ο髮?duì)學(xué)習(xí)JAVA很有必要,您要了解:什么是對(duì)象,什么是類;什么是封裝,什么是多態(tài),什么是繼承;什么是抽象類,什么是接口。了解了概念后,您還需要這些概念是如何體現(xiàn)的,如類和對(duì)象有什么區(qū)別?類是如何封裝的?
二、JAVA語(yǔ)法:如果您已經(jīng)有了開發(fā)經(jīng)驗(yàn),恭喜您,您學(xué)習(xí)JAVA語(yǔ)法來將比較容易。如果您有C++等面向?qū)ο笳Z(yǔ)言的開發(fā)經(jīng)驗(yàn),您只需簡(jiǎn)單的翻看一下介紹JAVA的相關(guān)書籍就可以了。如果您是新手,沒有關(guān)系,您下些工夫,好好研究一本JAVA初級(jí)教程之類的書就可以了。
學(xué)習(xí)了JAVA語(yǔ)法,加上面向?qū)ο蟮闹R(shí),只有您用心,您就可以寫出來比較好的JAVA代碼了。如果您再抽出時(shí)間熟悉一下JAVA編程規(guī)范,您代碼的水平就應(yīng)該不俗了。
三、JSP和HTML:在我國(guó)的絕大多數(shù)公司,做JAVA程序員都少不了和JSP以及HTML打交道。因此,想成為JAVA程序員就不可避免的要熟悉JSP和HTML,您最好能知道JSP的幾個(gè)內(nèi)置對(duì)象,如Session,Request,Reponse,以及常用的JSP標(biāo)簽,如
include,userBean等。盡管一些工具會(huì)幫您生成HTML代碼,但您還是要熟悉比如title等。如果您再熟悉一下JS和CSS就更好了,那會(huì)使您制作的頁(yè)面更友好。
四、WebServer:熟悉了以上三種,可以肯定的說您已經(jīng)可以制作出來JSP頁(yè)面了,您也可以在您的頁(yè)面里使用自己開發(fā)的JAVA類,但您的頁(yè)面總要跑起來才能看到您要的效果,這就要求您必須熟悉一種WebServer,比如:TOMCAT等。您要熟悉如何發(fā)布您的應(yīng)用,如何利用WebServer的數(shù)據(jù)庫(kù)資源等。
五、開發(fā)工具:大家都知道,開發(fā)工具可以幫助您更好更快地開發(fā),因此熟悉幾種開發(fā)工具很有必要。目前JAVA的開發(fā)工具比較流行的有Eclipse,HTML的開發(fā)工具有Dreamweaver等。
六、熟悉一種框架:熟悉一種框架其實(shí)是成為JAVA程序員的一種可選知識(shí),但目前開發(fā)B/S結(jié)構(gòu)的應(yīng)用的開發(fā)小組,都差不多會(huì)采用一種框架來構(gòu)建自己的應(yīng)用系統(tǒng)。框架都會(huì)有許多可重用的代碼,良好的層次關(guān)系和業(yè)務(wù)控制邏輯,基于框架的開發(fā)使你可以省出很多的開發(fā)成本。目前比較流行的框架有Struts和Spring等。
如何成為一名合格的java程序員?(轉(zhuǎn))
程序?qū)W習(xí)2008-05-27 19:56閱讀35評(píng)論01、語(yǔ)法:必須比較熟悉,在寫代碼的時(shí)候IDE的編輯器對(duì)某一行報(bào)錯(cuò)應(yīng)該能夠根據(jù)
報(bào)錯(cuò)信息知道是什么樣的語(yǔ)法錯(cuò)誤并且知道任何修正。
2、命令:必須熟悉JDK帶的一些常用命令及其常用選項(xiàng),命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果這些命令你沒有全部使用過,那么你對(duì)java實(shí)際上還很不了解。
3、工具:必須至少熟練使用一種IDE的開發(fā)工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括進(jìn)行工程管理、常用選項(xiàng)的設(shè)置、插件的安裝配置以及進(jìn)行調(diào)試。
4、API:Java的核心API是非常龐大的,但是有一些內(nèi)容筆者認(rèn)為是必須熟悉的,否則不可能熟練的運(yùn)用Java,包括:
1)、java.lang包下的80%以上的類的功能的靈活運(yùn)用。
2)、java.util包下的80%以上的類的靈活運(yùn)用,特別是集合類體系、規(guī)則表達(dá)式、zip、以及時(shí)間、隨機(jī)數(shù)、屬性、資源和Timer。
3)、java.io包下的60%以上的類的使用,理解IO體系的基于管道模型的設(shè)計(jì)思路以及常用IO類的特性和使用場(chǎng)合。
4)、java.math包下的100%的內(nèi)容。
5)、java.net包下的60%以上的內(nèi)容,對(duì)各個(gè)類的功能比較熟悉。
6)、java.text包下的60%以上的內(nèi)容,特別是各種格式化類。
7)、熟練運(yùn)用JDBC。
8)、java.security包下40%以上的內(nèi)容,如果對(duì)于安全沒有接觸的話根本就不可能掌握java。
9)、AWT的基本內(nèi)容,包括各種組件事件、監(jiān)聽器、布局管理器、常用組件、打印。
10)、Swing的基本內(nèi)容,和AWT的要求類似。
11)、XML處理,熟悉SAX、DOM以及JDOM的優(yōu)缺點(diǎn)并且能夠使用其中的一種完成XML的解析及內(nèi)容處理。
5、測(cè)試:必須熟悉使用junit編寫測(cè)試用例完成代碼的自動(dòng)測(cè)試。
6、管理:必須熟悉使用ant完成工程管理的常用任務(wù),例如工程編譯、生成javadoc、生成jar、版本控制、自動(dòng)測(cè)試。
7、排錯(cuò):應(yīng)該可以根據(jù)異常信息比較快速的定位問題的原因和大致位置。
8、思想:必須掌握OOP的主要要求,這樣使用Java開發(fā)的系統(tǒng)才能是真正的Java系統(tǒng)。
9、規(guī)范:編寫的代碼必須符合流行的編碼規(guī)范,例如類名首字母大寫,成員和方法名首字母小寫,方法名的第一個(gè)單詞一般是動(dòng)詞,包名全部小寫等,這樣程序的可讀性才比較好。
第三篇:Java基礎(chǔ)知識(shí)總結(jié)
Java總結(jié)
標(biāo)識(shí)符
? Java對(duì)各種變量、方法和類等要素命名時(shí)使用的字符數(shù)列稱為標(biāo)識(shí)符。
? 凡是自己可以起名字的地方都叫標(biāo)識(shí)符,都遵循標(biāo)識(shí)符的規(guī)則
? Java標(biāo)識(shí)符命名規(guī)則:
? 標(biāo)識(shí)符由字母、下劃線“__”、美元”$”或數(shù)字組成? 標(biāo)識(shí)符應(yīng)以字母、下劃線、美元符開頭
? Java標(biāo)識(shí)符大小寫敏感,長(zhǎng)度無限制
? 約定俗成:Java標(biāo)識(shí)符選取因“見名知意”且不能與Java語(yǔ)言的關(guān)鍵字重名
關(guān)鍵字
? Java中一些賦以特定的含義,用做專門用途的字符串稱為關(guān)鍵字(keyword)。
? 大多數(shù)編譯器會(huì)將關(guān)鍵字用特殊的方式標(biāo)出
? 所有Java關(guān)鍵字都是小寫英文。
? goto 和const雖然從未使用,但也作為被Java關(guān)鍵字保留。
Java常量
? Java的常量值用字符串表示,區(qū)分為不同的數(shù)據(jù)類型。
? 如整型常量123
? 實(shí)型常量3.12
? 字符常量?a?
? 邏輯常量true,false
? 字符串常量“helloword”
? 注意:區(qū)分字符串常量和字符常量
? 注意:“常量”這個(gè)名詞還會(huì)用在另外其他語(yǔ)境中表示值不可變的變量
? 參見final關(guān)鍵字
Java變量
? Java變量是程序中最基本的存儲(chǔ)單元,其要素包括變量名,變量類型和作用域。
? Java程序中每一個(gè)變量都屬于特定的數(shù)據(jù)類型,在使用前必須對(duì)其聲明,聲明格式:
? type varName[=value] [{,varName [=value]}]
? 例如:
? int I = 100;
? float f = 12.3f;
? double d1,d2,d3 = 0.123;
? String s = “Hello”;
? 從本質(zhì)上講,變量其實(shí)是內(nèi)存中的一小塊區(qū)域,使用變量名來訪問這塊區(qū)域,因此,每一個(gè)變量使用前必須要先申請(qǐng)(聲明),然后必須進(jìn)行賦值(填充內(nèi)容),才能使用
Java變量的分類
? 按被聲明的位置劃分:
? 局部變量:方法或語(yǔ)句塊內(nèi)部定義的變量
? 成員變量:方法外部、類的內(nèi)部定義的變量
? 注意:類外部(與類對(duì)應(yīng)的大括號(hào)外面)不能有變量的聲明
? 按所屬的數(shù)據(jù)類型劃分:
? 基本數(shù)據(jù)類型變量
? 引用數(shù)據(jù)類型變量
Java局部變量與成員變量
? 方法體內(nèi)部聲明的變量(包括形參)稱為局部變量:
? 方法體內(nèi)部是指與方法對(duì)應(yīng)的大括號(hào)內(nèi)部
? 在方法體外,類體內(nèi)聲明的變量成為成員變量
? public void method(){
? int i;
? int j = i+5;//編譯出錯(cuò),變量i還未被初始化
? double d = 3.14;
? Dog dog;
? Dog = new Dog(22,1964);
? }
? 注:以上程序面前還不能編譯
Java基本數(shù)據(jù)類型
? Java中定義了4類8種基本數(shù)據(jù)類型
? 邏輯型—boolean
? 文本型---char
? 整數(shù)型---byte,short,int,long
? 浮點(diǎn)數(shù)型---float,double
邏輯型boolean
? boolean類型適于邏輯運(yùn)算,一般用于程序流程控制。
? boolean類型數(shù)據(jù)只容許取值true或false,不可以0或非0的整數(shù)替代true和false,這點(diǎn)和C語(yǔ)言不同。字符型char
? Char型數(shù)據(jù)用來表示通常意義上“字符”
? 字符常量用單引號(hào)括起來的單個(gè)字符,例如:
? Char eChar = ?a?;char cChar = ?中?
? Java字符采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),因而可用十六進(jìn)制編碼形式表示,例如:
? Char c1 = ?u0061?;
? 注:Unicode是全球語(yǔ)言統(tǒng)一編碼
? Java語(yǔ)言中還允許使用轉(zhuǎn)義字符??來將其后轉(zhuǎn)變?yōu)槠渌x,例如:
? Char c1 = ?n?;//?n?代表?yè)Q行
? 補(bǔ)充:2進(jìn)制,10進(jìn)制,16機(jī)制之間的轉(zhuǎn)換
? 1101---1*1 + 0*2 + 1*4 + 1*8
? 13---1 + 4 + 8---1101
? 1101---D
整數(shù)類型
? Java各整數(shù)類型有固定的表示范圍和字段長(zhǎng)度,其不受具體操作系統(tǒng)的影響,以保證Java程序的可移
植性。
? Java語(yǔ)言整型常量的三種表示形式:
? 10進(jìn)制整數(shù):12-3140。
? 8進(jìn)制,要求以0開頭,如:012。
? 16進(jìn)制,要求0x或0X開頭,如:0x12
? Java語(yǔ)言的整型常量默認(rèn)為int類型,聲明long型常量可以后加?l?或?L?,如:
? int i1 = 600;long l1 = ***L;//必須加L否則出錯(cuò)
浮點(diǎn)類型
? 與整數(shù)類型類似,Java浮點(diǎn)類型有固定的表示范圍和字段長(zhǎng)度,不受平臺(tái)影響。
? Java浮點(diǎn)類型常量有兩種表示形式:
? 10進(jìn)制形式,例如:3.14312.0
? 科學(xué)記數(shù)形式:3.14e23.14E2
? Java浮點(diǎn)數(shù)默認(rèn)為double類型,如要聲明一個(gè)常量為float類型,則需要在數(shù)字后面加f或F
? double d = 12323.6;float f = 12.3f;必須加f否則出錯(cuò)
基本數(shù)據(jù)類型轉(zhuǎn)換
? Boolean類型不可以轉(zhuǎn)換為其他的數(shù)據(jù)類型
? 整型,字符型、浮點(diǎn)型的數(shù)據(jù)在混合運(yùn)算中相互轉(zhuǎn)換,轉(zhuǎn)換時(shí)遵循以下原則:
? 容量小的類型自動(dòng)轉(zhuǎn)換為容量大的數(shù)據(jù)類型:數(shù)據(jù)類型按容量大小排序?yàn)椋?/p>
? Byte,short,char->int->long->float-> double
? Byte,short,char之間不會(huì)相互轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先轉(zhuǎn)換為int類型
? 容量大的數(shù)據(jù)類型轉(zhuǎn)換為為容量小的數(shù)據(jù)類型時(shí),要加上強(qiáng)制轉(zhuǎn)換符,但可能造成精度降低或
溢出:使用時(shí)格外注意。
? 有多種類型的數(shù)據(jù)混合也算時(shí),系統(tǒng)首先自動(dòng)的將所有數(shù)據(jù)類型轉(zhuǎn)換為容量最大的,然后在進(jìn)
行計(jì)算
? 實(shí)數(shù)常量(如:1.2)默認(rèn)為double
? 整數(shù)常量(如:12)默認(rèn)為int
運(yùn)算符
? Java語(yǔ)言支持如下運(yùn)算符:
?
?
?
? 算術(shù)運(yùn)算符:+、-、*、/、%、++、--關(guān)系運(yùn)算符:>、<、>=、<=、==、!= 邏輯運(yùn)算符:!、&、|、^、&&、|| 位運(yùn)算符:&、|、^、~、>>、<<、>>>
? 賦值運(yùn)算符:=
? 擴(kuò)展賦值運(yùn)算符:+=、-=、*=、/=
? 字符串連接運(yùn)算符:+
邏輯運(yùn)算符
邏輯運(yùn)算:!--邏輯非&--邏輯與 |--邏輯或 ^--邏輯異或 &&--短路與 ||--短路或
賦值運(yùn)算符與擴(kuò)展賦值運(yùn)算符
? 賦值運(yùn)算符(=)
? 當(dāng)”=”兩側(cè)數(shù)據(jù)類型不一致時(shí),可以適用默認(rèn)類型轉(zhuǎn)換或使用強(qiáng)制類型轉(zhuǎn)換原則進(jìn)行處理
? long m = 100;int n =(int)m
? 注意:可以將整型常量直接賦值給byte,short,char等類型變量,而不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,只
要不超出其表示范圍:
? byte b = 12;char c = 100;
? byte bb = 256;short s =-32769
字符串連接符
? “+”除用于算術(shù)加法運(yùn)算外,還可以對(duì)字符串進(jìn)行連接操作
? int id = 800 + 90
? String s = “Hello” + “World”;
? “+”運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)字符串類型,系統(tǒng)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行
連接。
? int c = 12;
? System.out.println(“c=”+c);
? 當(dāng)進(jìn)行打印時(shí),無論任何類型,都自動(dòng)轉(zhuǎn)為字符串進(jìn)行打印
? System.out.println(c);
三目條件運(yùn)算符
? 三目運(yùn)算符,語(yǔ)法格式:
? X ? y : z
? 其中x為boolean類型表達(dá)式,先計(jì)算x的值,若為true,則整個(gè)三目運(yùn)算的結(jié)果為表達(dá)
式y(tǒng)的值,否則整個(gè)運(yùn)算結(jié)果為表達(dá)式z的值。
語(yǔ)句
? 條件語(yǔ)句—根據(jù)不同條件,執(zhí)行不同語(yǔ)句
? if
? if…else
? if…else if
? if…else if…else if…else
? switch
? 循環(huán)語(yǔ)句—重復(fù)執(zhí)行某些動(dòng)作
? for
? while
? do…while
if語(yǔ)句
?
?
?
? if if…else… if…else if… if…else if…else if…
? if…else if…else if…else
? 只有一句需要執(zhí)行的語(yǔ)句時(shí),可以省略{}
for循環(huán)語(yǔ)句
? for語(yǔ)句為如下形式:
? for(表達(dá)式1;表達(dá)式2;表達(dá)式3){ 語(yǔ)句;……}
? 執(zhí)行過程
達(dá)式3,再判斷表達(dá)式2的值;依此重復(fù)下去,直到表達(dá)式2的值=false
? for語(yǔ)句中三個(gè)表達(dá)式都可以省略
while & do while語(yǔ)句
? while語(yǔ)句為如下形式:
? while(邏輯表達(dá)式){語(yǔ)句……}
? 執(zhí)行過程:先判斷邏輯表達(dá)式的值。若=true則執(zhí)行其后面的語(yǔ)句,然后再次判斷條件
并反復(fù)執(zhí)行,直到條件不成立。
? do while語(yǔ)句為如下形式:
? do{語(yǔ)句…} while(邏輯表達(dá)式);? 首先計(jì)算表達(dá)式1,接著執(zhí)行表達(dá)式2,若表達(dá)式2的值=true,則執(zhí)行語(yǔ)句,接著計(jì)算表
? 執(zhí)行過程:先執(zhí)行語(yǔ)句,再判斷邏輯表達(dá)式的值,若為true,再執(zhí)行語(yǔ)句,否則結(jié)束循
環(huán)。
break & continue語(yǔ)句
? break在循環(huán)體中用于強(qiáng)制退出循環(huán),不再執(zhí)行循環(huán)中剩余的部分
? continue在循環(huán)體內(nèi),用于終止當(dāng)前的循環(huán),返回到循環(huán)的開始處,接著開始新的一次循環(huán)。switch語(yǔ)句(條件語(yǔ)句補(bǔ)充)
? switch(){
case xx:
….case xx:
….default:
….? }
?小心case穿透,推薦使用break語(yǔ)句
?多個(gè)case可以合并到一起
?default可以省略,但不推薦省略
?在switch語(yǔ)句里的選擇值只能是字符或是常量。
方法
? Java的方法類似于其他語(yǔ)言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式:
? [修飾符1,修飾符2…]返回值類型 方法名(形式參數(shù)列表){}
? 形式參數(shù):在方法調(diào)用時(shí)用于接收外界輸入的數(shù)據(jù)
? 實(shí)參:調(diào)用方法時(shí)實(shí)際傳給方法的數(shù)據(jù)
?
?
?
? 返回值:方法在執(zhí)行完畢后返回給調(diào)用它的環(huán)境的數(shù)據(jù)。返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型void Java語(yǔ)言中使用下述形式調(diào)用方法:對(duì)象名.方法名(實(shí)參列表)實(shí)參的數(shù)目、數(shù)據(jù)類型和次序必須和所調(diào)用方法聲明的形參列表匹配
? Return語(yǔ)句終止方法的運(yùn)行指定要返回的數(shù)據(jù)
? Java中進(jìn)行函數(shù)調(diào)用中傳遞參數(shù)時(shí),遵循傳遞的原則:
? 基本類型傳遞的是該數(shù)據(jù)本身。引用類型傳遞的是對(duì)對(duì)象的引用,而不是對(duì)象本身
遞歸調(diào)用
? 遞歸調(diào)用指在方法執(zhí)行過程中出現(xiàn)該方法本身的調(diào)用:
總結(jié)
? 標(biāo)識(shí)符
? 不用記規(guī)則,動(dòng)手
? 關(guān)鍵字
? 局部變量vs成員變量
? 變量作用域
? 內(nèi)存布局
? 基礎(chǔ)類型變量
? 4類8種,相互轉(zhuǎn)換
? 分支、循環(huán)
? 方法
? 形參、實(shí)參、返回值、返回值類型
? 遞歸調(diào)用
第四篇:JAVA基礎(chǔ)知識(shí)精華總結(jié)
1、對(duì)象的初始化
(1)非靜態(tài)對(duì)象的初始化
在創(chuàng)建對(duì)象時(shí),對(duì)象所在類的所有數(shù)據(jù)成員會(huì)首先進(jìn)行初始化。
基本類型:int 型,初始化為0.如果為對(duì)象:這些對(duì)象會(huì)按順序初始化。
※在所有類成員初始化完成之后,才調(diào)用本類的構(gòu)造方法創(chuàng)建對(duì)象。
構(gòu)造方法的作用就是初始化。
(2)靜態(tài)對(duì)象的初始化
程序中主類的靜態(tài)變量會(huì)在main方法執(zhí)行前初始化。
不僅第一次創(chuàng)建對(duì)象時(shí),類中的所有靜態(tài)變量都初始化,并且第一次訪問某 類(注意此時(shí)未創(chuàng)建此類對(duì)象)的靜態(tài)對(duì)象時(shí),所有的靜態(tài)變量也要按它們?cè)陬?中的順序初始化。
2、繼承時(shí),對(duì)象的初始化過程
(1)主類的超類由高到低按順序初始化靜態(tài)成員,無論靜態(tài)成員是否為private.(2)主類靜態(tài)成員的初始化。
(3)主類的超類由高到低進(jìn)行默認(rèn)構(gòu)造方法的調(diào)用。注意,在調(diào)用每一個(gè) 超類的默認(rèn)構(gòu)造方法前,先進(jìn)行對(duì)此超類進(jìn)行非靜態(tài)對(duì)象的初始化。
(4)主類非靜態(tài)成員的初始化。
(5)調(diào)用主類的構(gòu)造方法。3、關(guān)于構(gòu)造方法
(1)類可以沒有構(gòu)造方法,但如果有多個(gè)構(gòu)造方法,就應(yīng)該要有默認(rèn)的構(gòu) 造方法,否則在繼承此類時(shí),需要在子類中顯式調(diào)用父類的某一個(gè)非默認(rèn)的構(gòu)造 方法了。
(2)在一個(gè)構(gòu)造方法中,只能調(diào)用一次其他的構(gòu)造方法,并且調(diào)用構(gòu)造方 法的語(yǔ)句必須是第一條語(yǔ)句。
4、有關(guān)public、private 和protected(1)無public修飾的類,可以被其他類訪問的條件是:a.兩個(gè)類在同一文 件中,b.兩個(gè)類在同一文件夾中,c.兩個(gè)類在同一軟件包中。
(2)protected :繼承類和同一軟件包的類可訪問。
(3)如果構(gòu)造方法為private,那么在其他類中不能創(chuàng)建該類的對(duì)象。
5、抽象類
(1)抽象類不能創(chuàng)建對(duì)象。
(2)如果一個(gè)類中一個(gè)方法為抽象方法,則這個(gè)類必須為abstract抽象類。
(3)繼承抽象類的類在類中必須實(shí)現(xiàn)抽象類中的抽象方法。
(4)抽象類中可以有抽象方法,也可有非抽象方法。抽象方法不能為private.(5)間接繼承抽象類的類可以不給出抽象方法的定義。6、final 關(guān)鍵字
(1)一個(gè)對(duì)象是常量,不代表不能轉(zhuǎn)變對(duì)象的成員,仍可以其成員進(jìn)行操 作。
(2)常量在使用前必須賦值,但除了在聲明的同時(shí)初始化外,就只能在構(gòu) 造方法中初始化。
(3)final 修飾的方法不能被重置(在子類中不能出現(xiàn)同名方法)。
(4)如果聲明一個(gè)類為final,則所有的方法均為final,無論其是否被 final 修飾,但數(shù)據(jù)成員可為final 也可不是。7、接口interface(用implements來實(shí)現(xiàn)接口)
(1)接口中的所有數(shù)據(jù)均為static和final 即靜態(tài)常量。盡管可以不用這 兩個(gè)關(guān)鍵字修飾,但必須給常量賦初值。
(2)接口中的方法均為public,在實(shí)現(xiàn)接口類中,實(shí)現(xiàn)方法必須可public 關(guān)鍵字。
(3)如果使用public來修飾接口,則接口必須與文件名相同。8、多重繼承
(1)一個(gè)類繼承了一個(gè)類和接口,那么必須將類寫在前面,接口寫在后面,接口之間用逗號(hào)分隔。
(2)接口之間可多重繼承,注意使用關(guān)鍵字extends.(3)一個(gè)類雖只實(shí)現(xiàn)了一個(gè)接口,但不僅要實(shí)現(xiàn)這個(gè)接口的所有方法,還 要實(shí)現(xiàn)這個(gè)接口繼承的接口的方法,接口中的所有方法均須在類中實(shí)現(xiàn)。9、接口的嵌入
(1)接口嵌入類中,可以使用private 修飾。此時(shí),接口只能在所在的類 中實(shí)現(xiàn),其他類不能訪問。
(2)嵌入接口中的接口一定要為public.10、類的嵌入
(1)類可以嵌入另一個(gè)類中,但不能嵌入接口中。
(2)在靜態(tài)方法或其他方法中,不能直接創(chuàng)建內(nèi)部類對(duì)象,需通過手段來 取得。
手段有兩種:
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è)類繼承了另一個(gè)類的內(nèi)部類,因?yàn)槌愂莾?nèi)部類,而內(nèi)部類的構(gòu) 造方法不能自動(dòng)被調(diào)用,這樣就需要在子類的構(gòu)造方法中明確的調(diào)用超類的構(gòu)造 方法。接上例:
class C extends A.B { C(){ new A()。super(); // 這一句就 實(shí)現(xiàn)了對(duì)內(nèi)部類構(gòu)造方法的調(diào)用。} } 構(gòu)造方法也可這樣寫:
C(A a){ a.super(); } // 使用這個(gè)構(gòu)造方法創(chuàng)建對(duì)象,要寫成C c = new C(a); a是A 的對(duì)象。
11、異常類
JAVA中除了RunTimeException類,其他異常均須捕獲或拋出。
第五篇:java部分?jǐn)?shù)據(jù)結(jié)構(gòu)總結(jié)
package datastructtest;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Scanner;
import javax.swing.JFrame;
public class Testbase {
public static void main(String[] args)throws IOException{
//100之內(nèi)被3或7整除的數(shù)的個(gè)數(shù)
//int m=0,n=0;
//for(int i=0;i<100;i++){
//if(i%3==0){
//m++;
//}
//if(i%7==0){
//n++;
//}
//}
//System.out.println(“m=”+m+“ ;”);
//System.out.println(“n=”+n+“ ;”);
//1~100之間的整數(shù)累加和,并顯示每個(gè)整數(shù)和當(dāng)前累加和的對(duì)應(yīng)關(guān)系 //int sum=0;
//for(int i=1;i<=100;i++){
//
//System.out.print(“i=”+i+“,sum=”+sum);
//sum+=i;
//System.out.println(“;i+sum=”+sum);
//}
//計(jì)算30的階乘
//int m=jiecheng(30);
//System.out.println(m);
//直接插入排序
//int[] test={64,5,7,89,6,24};
//int n=test.length;
//insertSort(test);
//for(int i=0;i //System.out.print(test[i]+“,”); //} //希爾排序 //int[] test={65,34,25,87,12,38,56,46,14,77,92,33};//int n=test.length; //int d[]={6,3,1};//每次循環(huán)用到的增量值 //int numOfD=d.length;//共進(jìn)行幾次循環(huán) //shellSort(test,d,numOfD); //for(int i=0;i //System.out.print(test[i]+“,”); // } //直接選擇排序 //int[] test={65,34,25,87,12,38,56,46,14,77,92,33}; //int n=test.length; // //selectSort(test); //for(int i=0;i //System.out.print(test[i]+“,”); // } ////字符串逆轉(zhuǎn) //char[]a={'a','f','g','h','j'}; //char[]b=reverse1(a); //for(int i=0;i //System.out.print(b[i]+“,”); //} //Scanner類的應(yīng)用和split的使用 //System.out.println(“請(qǐng)輸入帶逗號(hào)的字符:”); //Scanner sc=new Scanner(System.in); // //while(sc.hasNext()){ //StringBuffer str=new StringBuffer(); //str=str.append(sc.next()); ////System.out.println(str); //String st=str.toString(); //String[] a=st.split(“,”); //System.out.println(“字符串被逗號(hào)分割之后:”); //for(int i=0;i //System.out.println(a[i]); //} //} //寫文件和讀文件復(fù)制文件aa到bb //FileReader filein=new FileReader(new File(“d://aa.txt”));//此句會(huì)產(chǎn)生異常 //FileWriter fileout=new FileWriter(new File(“d://bb.txt”));//int c; //while((c=filein.read())!=-1){ //fileout.write(c); //} //filein.close(); //fileout.close(); // } private static int jiecheng(int n){ if(n==1) return 1; else return n*jiecheng(n-1); } //棧 private LinkedList list=new LinkedList(); public void push(Object v){ list.addFirst(v); } public Object top(){ return list.getFirst(); } public Object pop(){ return list.removeFirst(); } //直接插入排序 public static void insertSort(int[] a){ int i,j,temp; int n=a.length; for(i=0;i temp=a[i+1]; j=i; while(j>-1&&temp<=a[j]){ a[j+1]=a[j]; j--; } a[j+1]=temp; } //for(i=0;i //temp=a[i+1]; //// j=i; //while(i>-1&&temp<=a[i]){ //a[i+1]=a[i]; //i--; //} //a[i+1]=temp; //} } //希爾排序 public static void shellSort(int[]a,int[]d,int numOfD){ int i,j,k,m,span; int temp; int n=a.length; for(m=0;m span=d[m];//取本次的增量值 for(k=0;k for(i=k;i temp=a[i+span]; j=i; while(j>-1&&temp<=a[j]){ a[j+span]=a[j]; j=j-span; } a[j+span]=temp; } } } } //直接選擇排序 public static void selectSort(int[]a){ int i,j,small; int temp; int n=a.length; for(i=0;i small=i;//設(shè)第i個(gè)數(shù)據(jù)元素最小