




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java基礎(chǔ)方面:
1.作用域public,protected,private,以及不寫時(shí)的區(qū)別
作用域當(dāng)前類同一,package子孫類其他package
publicVVVJ
protectedVJVX
friendlyVVXX
privateVXXX
不寫時(shí)默認(rèn)為friendly
2.collection和map
Collection和Collections的區(qū)別
答:Collection是集合類的上級(jí)接口,繼承與他的接口主要有Set和List.
Collections是針對(duì)集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排
序、線程安全化等操作
Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢?是用==還是equals。?它們
有何區(qū)別?
答:Set里的元素是不能重復(fù)的,那么用iterator。方法來(lái)區(qū)分重復(fù)與否。equals。是判斷
兩個(gè)Set是否相等,equals(^l==方法決定引用值是否指向同一對(duì)象equals。在類中被覆蓋,
為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類型相配的話,返回真值
List,Set,Map是否繼承自Collection接口
答:List,Set是,Map不是
AmyList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
答:就ArrayList與Vector主要從二方面來(lái)說(shuō):
1、同步性:Vector是線程安全的,也就是說(shuō)是同步的,而ArrayList是線程序不安全的,
不是同步的
2、數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為原來(lái)一倍,而ArrayList卻是原來(lái)的一半
就HashMap與HashTable主要從三方面來(lái)說(shuō):
1、歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java1.2引進(jìn)的Map
接口的一個(gè)實(shí)現(xiàn)
2、同步性:Hashtable是線程安全的,也就是說(shuō)是同步的,而HashMap是線程序不安全
的,不是同步的
3>值:只有HashM叩可以讓你將空值作為一個(gè)表的條目的key或value
介紹JAVA中的CollectionFrameWork(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?
答:CollectionFrameWork如下:
Collection
-List
-LinkedList
-ArrayList
^-Vector
Lstack
LSet
Map
-Hashtable
-HashMap
1-WeakHashMap
Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素
(Elements)
Map提供key到value的映射
說(shuō)出ArrayList,Vector,LinkedList的存儲(chǔ)性能和特性
答:ArrayList和Vector都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)
據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移
動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vectcr山于使用了synchronized方法(線程
安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)
需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較
快。
HashMap和Hashtable的區(qū)別
答:HashM叩是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完成了M叩接
口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于
Hashtable。
HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)?/p>
contains方法容易讓人引起誤解。
Hashtable繼承自Dictionary類而HashMap是Javal.2引進(jìn)的Mapinterface的一個(gè)實(shí)現(xiàn)。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪
問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap就必須為之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。
你所知道的集合類都有哪些?主要方法?
答:最常用的集合類是List和Map。List的具體實(shí)現(xiàn)包括ArrayList和Vector,它
們是可變大小的列表,比較適合構(gòu)建、存儲(chǔ)和操作任何類型對(duì)象的元素列表。List適
用于按數(shù)值索引訪問(wèn)元素的情形。
Map提供了一個(gè)更通用的元素存儲(chǔ)方法。Map集合類用于存儲(chǔ)元素對(duì)(稱作“鍵“和“
值”),其中每個(gè)鍵映射到個(gè)值。
List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?
答:List以特定次序來(lái)持有元素,可有重復(fù)元素。Set無(wú)法擁有重復(fù)元素,內(nèi)部排序。
Map保存key-value值,value可多值。
介紹Java中的CollectionFrameWork(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?如COLLECTION中遺留
類(HASHTABLE、VECTOR)和現(xiàn)有類的區(qū)別?(同步)
3.內(nèi)部類的實(shí)現(xiàn)方式?
Outerclass.Innerclassinclass=Outerlnstance.newInnerclass();
4.垃圾回收機(jī)制,如何優(yōu)化程序?
5.垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通
知虛擬機(jī)進(jìn)行垃圾回收
答:對(duì)于GC來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及
使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象。通過(guò)這種方式
確定哪些對(duì)象是"可達(dá)的",哪些對(duì)象是"不可達(dá)的"。當(dāng)GC確定一些對(duì)象為“不可達(dá)”時(shí),GC
就有責(zé)任回收這些內(nèi)存空間。可以。程序員可以手動(dòng)執(zhí)行System.gc。,通知GC運(yùn)行,但是
Java語(yǔ)言規(guī)范并不保證GC一定會(huì)執(zhí)行。
6.垃圾回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制
答:Java語(yǔ)言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使C++程序員最頭疼的內(nèi)存
管理的問(wèn)題迎刃而解,它使得Java程序員在編寫程序的時(shí)候不再需要考慮內(nèi)存管理。垃圾
回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個(gè)單
獨(dú)的低級(jí)別的線程運(yùn)行,不可預(yù)知的情況下對(duì)內(nèi)存堆中已經(jīng)死亡的或者長(zhǎng)時(shí)間沒(méi)有使用的對(duì)
象進(jìn)行清楚和回收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對(duì)某個(gè)對(duì)象或所有對(duì)象進(jìn)行垃圾回
收?;厥諜C(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。
7.GC是什么?為什么要有GC
答:GC是垃圾收集的意思(GabageCollection),內(nèi)存處理是編程人員容易出現(xiàn)問(wèn)題的
地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能
可以自動(dòng)監(jiān)測(cè)對(duì)象是否超過(guò)作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,Java語(yǔ)言沒(méi)有提供釋放已
分配內(nèi)存的顯示操作方法。
8.java內(nèi)存泄露
C/C++的泄漏,是對(duì)象已不可到達(dá),而內(nèi)存又沒(méi)有回收,真正的內(nèi)存黑洞。而Java的泄
漏,則是因?yàn)楦鞣N原因,對(duì)象對(duì)應(yīng)用已經(jīng)無(wú)用,但一直被持有,一直可到達(dá)。
總結(jié)原因包括以下幾方面:
1).被生命周期極長(zhǎng)的集合類不當(dāng)持有,號(hào)稱是Java內(nèi)存泄漏的首因。
這些集合類的生命周期通常極長(zhǎng),而且是一個(gè)輔助管理性質(zhì)的對(duì)象,在一個(gè)業(yè)務(wù)事務(wù)
運(yùn)行完后,如果沒(méi)有將某個(gè)業(yè)務(wù)對(duì)象主動(dòng)的從中清除的話,這個(gè)集合就會(huì)吃越來(lái)越多內(nèi)存,
可以用WeakReference,如WeakHashMap,使得它持有的對(duì)象不增加對(duì)象的引用數(shù)。
2).Scope定義不對(duì),這個(gè)很簡(jiǎn)單了,方法的局部變量定義成類的變量,類的靜態(tài)變量等。
3).異常時(shí)沒(méi)有加finally。來(lái)釋放某些資源,JDBC時(shí)代也是很普遍的事情。
4).另外一些我了解不深的原因,如:Swing里的Listener沒(méi)有顯式remove;內(nèi)部類持有
外部對(duì)象的隱式引用;Finalizers造成關(guān)聯(lián)對(duì)象沒(méi)有被及時(shí)清空等。
9.運(yùn)行時(shí)異常與一般異常有何異同
答:異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操
作中可能遇到的異常,是一種常見(jiàn)運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的
非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。
10.Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。java的事件機(jī)制?
答:當(dāng)JAVA程序違反了JAVA的語(yǔ)義規(guī)則時(shí),JAVA虛擬機(jī)就會(huì)將發(fā)生的錯(cuò)誤表示為
一個(gè)異常。違反語(yǔ)義規(guī)則包括2種情況。一種是JAVA類庫(kù)內(nèi)置的語(yǔ)義檢查。例如數(shù)組下標(biāo)
越界,會(huì)引發(fā)IndexOutOfBoundsException;訪問(wèn)null的對(duì)象時(shí)會(huì)引發(fā)NullPointerExceptiono另
一種情況就是JAVA允許程序員擴(kuò)展這種語(yǔ)義檢查,程序員可以創(chuàng)建自己的異常,并自由選
擇在何時(shí)用throw關(guān)鍵字號(hào)I發(fā)異常。所有的異常都是java.lang.Thowable的子類。
11.JAVA語(yǔ)言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?
在try塊中可以拋出異常嗎?
答:Java通過(guò)面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類,并提供了良
好的接口。在Java中,每個(gè)異常都是一個(gè)對(duì)象,它是Throwable類或其它子類的實(shí)例。當(dāng)
一個(gè)方法出現(xiàn)異常后便拋出一個(gè)異常對(duì)象,該對(duì)象中包含有異常信息,調(diào)用這個(gè)對(duì)象的方法
可以捕獲到這個(gè)異常并進(jìn)行處理。Java的異常處理是通過(guò)5個(gè)關(guān)鍵詞來(lái)實(shí)現(xiàn)的:try、catch、
throw、throws和finally。一般情況下是用try來(lái)執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會(huì)拋出
(throws)一個(gè)異常,這時(shí)候你可以通過(guò)它的類型來(lái)捕捉(catch)它,或最后(finally)由
缺省處理器來(lái)處理。
用try來(lái)指定一塊預(yù)防所有“異?!钡某绦?。緊跟在try程序后面,應(yīng)包含一個(gè)catch子句
來(lái)指定你想要捕捉的"異常"的類型。
throw語(yǔ)句用來(lái)明確地拋出一個(gè)”異常"。
throws用來(lái)標(biāo)明個(gè)成員函數(shù)可能拋出的各種“異常"。拋出多個(gè)異常
Finally為確保一段代碼不管發(fā)生什么"異?!倍急粓?zhí)行一段代碼。
可以在?個(gè)成員函數(shù)調(diào)用的外面寫一個(gè)try語(yǔ)句,在這個(gè)成員函數(shù)內(nèi)部寫另個(gè)try語(yǔ)
句保護(hù)其他代碼。每當(dāng)遇到一個(gè)try語(yǔ)句,“異常”的框架就放到堆棧上面,直到所有的try
語(yǔ)句都完成。如果下一級(jí)的try語(yǔ)句沒(méi)有對(duì)某種“異?!边M(jìn)行處理,堆棧就會(huì)展開(kāi),直到遇到
有處理這種"異常"的try語(yǔ)句。
12.error和exception有什么區(qū)別
答:error表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題,比如說(shuō)內(nèi)存溢出,
不可能指望程序能處理這樣的情況;exception表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表
示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況
13.try{}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally{}里的code會(huì)不會(huì)被執(zhí)行,
什么時(shí)候被執(zhí)行,在return前還是后
答:會(huì)執(zhí)行,在return前執(zhí)行
14.內(nèi)部類可以引用他包含類的成員嗎?有沒(méi)有什么限制?
答:一個(gè)內(nèi)部類對(duì)象可以訪問(wèn)創(chuàng)建它的外部類對(duì)象的內(nèi)容
15.AnonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以
implements(實(shí)現(xiàn))interface(接口)
答:匿名的內(nèi)部類是沒(méi)有名字的內(nèi)部類??梢岳^承抽象(SDK1.5沒(méi)有限制),但一個(gè)內(nèi)
部類可以作為一個(gè)接口,由另一個(gè)內(nèi)部類實(shí)現(xiàn)
16.StaticNestedClass和InnerClass的不同
答:NestedClass(-一般是C++的說(shuō)法),InnerClass(一般是JAVA的說(shuō)法)。Java內(nèi)部
類與C++嵌套類最大的不同就在于是否有指向外部的引用上。
注:靜態(tài)內(nèi)部類(InnerClass)意味著
1創(chuàng)建一個(gè)static內(nèi)部類的對(duì)象,不需要一個(gè)外部類對(duì)象。
2不能從一個(gè)static內(nèi)部類的,?個(gè)對(duì)象訪問(wèn)一個(gè)外部類對(duì)象
17.&和&&的區(qū)別
答:&是位運(yùn)算符,表示按位與運(yùn)算,&&是邏輯運(yùn)算符,表示邏輯與(and)
18.什么時(shí)候用assert
答:assertion(斷言)在軟件開(kāi)發(fā)中是一種常用的調(diào)試方式,很多開(kāi)發(fā)語(yǔ)言中都支持這種
機(jī)制。在實(shí)現(xiàn)中,assertion就是在程序中的■,條語(yǔ)句,它對(duì)一個(gè)boolean表達(dá)式進(jìn)行檢查,
一個(gè)正確程序必須保證這個(gè)boolean表達(dá)式的值為true;如果該值為false,說(shuō)明程序已經(jīng)處
于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來(lái)說(shuō),assertion用于保證程序最基本、關(guān)
鍵的正確性。assertion檢查通常在開(kāi)發(fā)和測(cè)試時(shí)開(kāi)啟。為了提高性能,在軟件發(fā)布后,assertion
檢查通常是關(guān)閉的
assertexpression
19.Java有沒(méi)有g(shù)oto
答:java中的保留字,現(xiàn)在沒(méi)有在java中使用
20.數(shù)組有沒(méi)有l(wèi)ength。這個(gè)方法?String有沒(méi)有l(wèi)ength。這個(gè)方法
答:數(shù)組沒(méi)有l(wèi)ength。這個(gè)方法,有l(wèi)ength的屬性。String有l(wèi)ength。這個(gè)方法
21.Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型
答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding
是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如
果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(Overriding)?
子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被"屏蔽”
了。如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,
則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型
22.給我一個(gè)你最常見(jiàn)到的runtimeexception
答:常見(jiàn)的運(yùn)行時(shí)異常有如下這些ArithmeticException,ArrayStoreException,
BufferOverflowException,BufferUnderflowException,CannotRedoException,
CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,
DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,
IllegalPathStateException,IllegalStateException,ImagingOpException,
IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,
NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,
RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,
UnmodifiableSetException,UnsupportedOperationException
23.abstractclass和interface有什么區(qū)別
答:聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstractclass),它用于要?jiǎng)?chuàng)建一
個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建
abstract類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的
一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的所有抽
象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的
其它類可以在類中實(shí)現(xiàn)這些方法
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)
實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定
義staticfinal成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。
當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)
現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用
變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,
instanceof運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了接口
接口的好處是將實(shí)現(xiàn)與表現(xiàn)分離。抽象類與接口都用于抽象,但是抽象類(Java中)可以
有自己的部分實(shí)現(xiàn),而接口則完全是一個(gè)標(biāo)識(shí)(同時(shí)有多重繼承的功能)。
24.abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized
答:都不能
25.接口是否可繼承接口?抽象類是否可實(shí)現(xiàn)(implements)接口?抽象類是否可繼承實(shí)體類
(concreteclass)
答:接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承實(shí)體類,
但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)
26.構(gòu)造器Constructor是否可被override
答:構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading
27.是否可以繼承String類
答:String類是final類故不可以繼承
28.兩個(gè)對(duì)象值相同(x.equals(y)==Irue),但卻可有不同的hashcode,這句話對(duì)不對(duì)
答:不對(duì),有相同的hashcode
29.當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變
化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞
答:是值傳遞。Java編程語(yǔ)言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞
到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)
象的引用是永遠(yuǎn)不會(huì)改變的
30.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:switch(exprl)中,exprl是一個(gè)整數(shù)表達(dá)式。因此傳遞給switch和case語(yǔ)句的
參數(shù)應(yīng)該是int、short,char或者byte。long,string都不能作用于swtich
31.char型變量中能不能存貯一個(gè)中文漢字?為什么?
答:是能夠定義成為一個(gè)中文的,因?yàn)閖ava中以u(píng)nicode編碼,一個(gè)char占16個(gè)比特,
所以放一個(gè)中文是沒(méi)問(wèn)題的
如果用gbk的本地編碼的話可以.如果用utf-8的話,可能不行。
32.抽象類與接口?
答:抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實(shí)現(xiàn),而接口
則完全是一個(gè)標(biāo)識(shí)(同時(shí)有多實(shí)現(xiàn)的功能)。
JAVA類實(shí)現(xiàn)序例化的方法是實(shí)現(xiàn)java.io.Serializable接口
Collection框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)Comparable接口和Comparator接口
33.STRING與STRINGBUFFER的區(qū)別。
答:STRING的長(zhǎng)度是不可變的,STRINGBUFFER的長(zhǎng)度是可變的。如果你對(duì)字符串
中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時(shí),那么使用StringBuffer,如果最后需要String,
那么使用StringBuffer的toString()方法
34.談?wù)刦inal,finally,finalize的區(qū)別
答:final—修飾符(關(guān)鍵字)如果■個(gè)類被聲明為final,意味著它不能再派生出新的子
類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為abstract的,又被聲明為final的。
將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在
聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只
能使用,不能重載
finally一再異常處理時(shí)提供finally塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么
相匹配的catch子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入finally塊(如果有的話)
finalize—方法名。Java技術(shù)允許使用finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除
出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)
對(duì)象調(diào)用的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方
法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)
這個(gè)對(duì)象調(diào)用的
35.面向?qū)ο蟮奶卣饔心男┓矫?/p>
答:主要有以下四方面:
1.抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)
前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的?部分,暫時(shí)不用部分
細(xì)節(jié)。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數(shù)據(jù)抽象。
2.繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了?種明確
表述共性的方法。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過(guò)程稱為類繼承。新類繼承
了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派
生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合
特殊的需要。
3.封裝:封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)?/p>
象計(jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成?系列完全自治、封裝的對(duì)象,這些對(duì)
象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。
4.多態(tài)性:多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多
態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決
了應(yīng)用程序函數(shù)同名問(wèn)題。
36.String是最基本的數(shù)據(jù)類型嗎
答:不是,基本數(shù)據(jù)類型包括byte、int、char、long、float、double>boolean和short。
java』ang.String類是final類型的,因此不可以繼承這個(gè)類、不能修改這個(gè)類。為了提高效率
節(jié)省空間,我們應(yīng)該用StringBuffer類
37.int和Integer有什么區(qū)別
答:Java提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。
Int是java的原始數(shù)據(jù)類型,Integer是java為int提供的wapper。Java為每個(gè)原始類型
提供了封裝類。
原始類型封裝類:
boolean:Boolean
char:Character
byte:Byte
short:Short
int:Integer
long:Long
float:Float
double:Double
引用類型和原始類型的行為完全不同,并且它們具有不同的語(yǔ)義。引用類型和原始類型
具有不同的特征和用法,它們包括:大小和速度問(wèn)題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),
當(dāng)引用類型和原始類型用作某個(gè)類的實(shí)例數(shù)據(jù)時(shí)所指定的缺省值。對(duì)象引用實(shí)例變量的缺省
值為null,而原始類型實(shí)例變量的缺省值與它們的類型有關(guān)
38.heap和stack有什么區(qū)別
答:棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進(jìn)先出的
方式進(jìn)行處理。堆是棧的一個(gè)組成元素
39.Java的接口和C++的虛類的相同和不同處
答:由于Java不支持多繼承,而有可能某個(gè)類或?qū)ο笠褂梅謩e在幾個(gè)類或?qū)ο罄锩?/p>
的方法或?qū)傩裕F(xiàn)有的單繼承機(jī)制就不能滿足要求。與繼承相比,接口有更高的靈活性,因
為接口中沒(méi)有任何實(shí)現(xiàn)代碼。當(dāng)一個(gè)類實(shí)現(xiàn)了接口以后,該類要實(shí)現(xiàn)接口里面所有的方法和
屬性,并且接口里面的屬性在默認(rèn)狀態(tài)下面都是publicstatic,所有方法默認(rèn)情況下是public.
一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。
40.描述一下JVM加載class文件的原理機(jī)制?
答:JVM中類的裝載是由ClassLoader和它的子類來(lái)實(shí)現(xiàn)的JavaClassLoader是一個(gè)重
要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類文件的類。
41.排序都有哪幾種方法?請(qǐng)列舉
答:排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快
速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)
快速排序的偽代碼。
使用快速排序方法對(duì)a[0:n-1]排序:
從a[0:n-1]中選擇一個(gè)元素作為middle,該元素為支點(diǎn),把余下的元素分割為兩段left
和right,使得left中的元素都小于等于支點(diǎn),而right中的元素都大于等于支點(diǎn)。
遞歸地使用快速排序方法對(duì)left進(jìn)行排序
遞歸地使用快速排序方法對(duì)right進(jìn)行排序
所得結(jié)果為left+middle+right
42.一個(gè)”.java"源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制?
答:可以。必須只有一個(gè)類名與文件名相同。
43.java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請(qǐng)說(shuō)出他們
分別是哪些類?
答:字節(jié)流,字符流。字節(jié)流繼承于InputStreamOutputstream,字符流繼承于
InputStreamReaderOutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高
性能和使用方便。
44.java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?
答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding
是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。
45.靜態(tài)變量和實(shí)例變量的區(qū)別?
46.什么是java序列化,如何實(shí)現(xiàn)java序列化?
答:序列化就是?種用來(lái)處理對(duì)象流的機(jī)制,所謂對(duì)象流也就是將對(duì)象的內(nèi)容進(jìn)行流化。
可以對(duì)流化后的對(duì)象進(jìn)行讀寫操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。序列化是為了解
決在對(duì)對(duì)象流進(jìn)行讀寫操作時(shí)所引發(fā)的問(wèn)題。
序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口,該接口沒(méi)有需要實(shí)現(xiàn)的方
法,implementsSerializable只是為了標(biāo)注該對(duì)象是可被序列化的,然后使用一個(gè)輸出流(如:
FileOutputStream)來(lái)構(gòu)造一個(gè)ObjectOulputStream(對(duì)象流)對(duì)象,接著,使用
ObjectOutputStream對(duì)象的writeObject(Objectobj)方法就可以將參數(shù)為obj的對(duì)象寫出(即保
存其狀態(tài)),要恢復(fù)的話則用輸入流。
47.是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用?
答:不可以,如果其中包含對(duì)象的method();不能保證對(duì)象初始化.
48.寫clone。方法時(shí),通常都有一行代碼,是什么?
答:Clone有缺省行為,super.clone。;他負(fù)責(zé)產(chǎn)生正確大小的空間,并逐位復(fù)制。
49.在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)?
答:用break;return方法。
50.說(shuō)出一些常用的類,包,接口,請(qǐng)各舉5個(gè)
答:常用的類:BufferedReaderBufferedWriterFileReaderFileWirterStringInteger
常用的包:java.langjava.awtjava.iojava.utiljava.sql
常用的接口:RemoteListMapRunnableSerializableActionListener
51.BS與CS的聯(lián)系與區(qū)別。
答:C/S是Client/Server的縮寫.服務(wù)器通常采用高性能的PC、工作站或小型機(jī),并采
用大型數(shù)據(jù)庫(kù)系統(tǒng),如Oracle、Sybase、Informix或SQLServer.客戶端需要安裝專用的客戶
端軟件.
B/S是Brower/Server的縮寫,客戶機(jī)上只要安裝一個(gè)瀏覽器(Browser),如Netscape
Navigator或InternetExplorer,服務(wù)器安裝Oracle、Sybase、Inform汰或SQLServer等數(shù)據(jù)庫(kù).
在這種結(jié)構(gòu)下,用戶界面完全通過(guò)WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要
事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn).瀏覽器通過(guò)WebServer同數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互.
C/S與B/S區(qū)別:
1.硬件環(huán)境不同:
C/S一般建立在專用的網(wǎng)絡(luò)上,小范圍里的網(wǎng)絡(luò)環(huán)境,局域網(wǎng)之間再通過(guò)專門服務(wù)器提
供連接和數(shù)據(jù)交換服務(wù).
B/S建立在廣域網(wǎng)之上的,不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng),租用設(shè)備.信息
自己管理.有比C/S更強(qiáng)的適應(yīng)范圍,?般只要有操作系統(tǒng)和瀏覽器就行
2.對(duì)安全要求不同
C/S?般面向相對(duì)固定的用戶群,對(duì)信息安全的控制能力很強(qiáng).一般高度機(jī)密的信息系
統(tǒng)采用C/S結(jié)構(gòu)適宜.可以通過(guò)B/S發(fā)布部分可公開(kāi)信息.
B/S建立在廣域網(wǎng)之上,對(duì)安全的控制能力相對(duì)弱,可能面向不可知的用戶.
3.對(duì)程序架構(gòu)不同
C/S程序可以更加注重流程,可以對(duì)權(quán)限多層次校驗(yàn),對(duì)系統(tǒng)運(yùn)行速度可以較少考慮.
B/S對(duì)安全以及訪問(wèn)速度的多重的考慮,建立在需要更加優(yōu)化的基礎(chǔ)之上.比C/S有更
高的要求B/S結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢(shì),從MS的.Net系列的BizTalk2000Exchange
2000等,全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng).SUN和IBM推的JavaBean構(gòu)件技術(shù)等,使B/S
更加成熟.
4.軟件重用不同
C/S程序可以不可避免的整體性考慮,構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性
好.
B/S對(duì)的多重結(jié)構(gòu),要求構(gòu)件相對(duì)獨(dú)立的功能.能夠相對(duì)較好的重用.就入買來(lái)的餐桌可
以再利用,而不是做在墻上的石頭桌子
5.系統(tǒng)維護(hù)不同
C/S程序由于整體性,必須整體考察,處理出現(xiàn)的問(wèn)題以及系統(tǒng)升級(jí).升級(jí)難.可能是
再做一個(gè)全新的系統(tǒng)
B/S構(gòu)件組成,方面構(gòu)件個(gè)別的更換,實(shí)現(xiàn)系統(tǒng)的無(wú)縫升級(jí).系統(tǒng)維護(hù)開(kāi)銷減到最小.用戶
從網(wǎng)上自己下載安裝就可以實(shí)現(xiàn)升級(jí).
6.處理問(wèn)題不同
C/S程序可以處理用戶面固定,并且在相同區(qū)域,安全要求高需求,與操作系統(tǒng)相關(guān).
應(yīng)該都是相同的系統(tǒng)
B/S建立在廣域網(wǎng)上,面向不同的用戶群,分散地域,這是C/S無(wú)法作到的.與操作系
統(tǒng)平臺(tái)關(guān)系最小.
7.用戶接口不同
C/S多是建立的Window平臺(tái)上,表現(xiàn)方法有限,對(duì)程序員普遍要求較高
B/S建立在瀏覽器上,有更加豐富和生動(dòng)的表現(xiàn)方式與用戶交流.并且大部分難度減低,
減低開(kāi)發(fā)成本.
8.信息流不同
C/S程序一般是典型的中央集權(quán)的機(jī)械式處理,交互性相對(duì)低
B/S信息流向可變化,B-BB-CB-G等信息、流向的變化,更像交易中心.
52.說(shuō)出一些常用的類,包,接口,請(qǐng)各舉5個(gè)
答:常用的類:BufferedReaderBufferedWriterFileReaderFileWirterStringInteger
常用的包:java.langjava.awtjava.iojava.utiljava.sql
常用的接口:RemoteListM叩DocumentNodeList
基礎(chǔ)題
1.float型floatf=3.4是否正確?
不正確。精度不準(zhǔn)確,應(yīng)該用強(qiáng)制類型轉(zhuǎn)換,如下所示:floatf=(float)3.4
Inti=newint(5);Long1=newLong(5)-〉貝iji.equals(l)為false;i.equals(5)為true
2.Strings=newString("xyz”);創(chuàng)建了幾個(gè)StringObject
答:“xyz”本身作為字符常量,在匯編語(yǔ)言中應(yīng)該作為常量放在數(shù)據(jù)段,Java有一
個(gè)類似數(shù)據(jù)段的constantpool保存這個(gè)常量,在classloader加載這個(gè)類的時(shí)候就把“xyz”和
這個(gè)類的其他一些信息放在constantpoolnewString(“xyz")根據(jù)常量“xyz”在heap上創(chuàng)建
String對(duì)象所以,一共兩個(gè)對(duì)象。?個(gè)對(duì)象+?個(gè)引用;
String(Stringoriginal)InitializesanewlycreatedStringobjectsothatit
representsthesamesequenceofcharactersastheargument;inotherwords,t
henewlycreatedstringisacopyoftheargumentstring.
3.Math.round(l1.5)等於多少?Math.round(-11.5)等於多少
答:Math.round(l1.5)==12;Math.round(-11.5)==-ll;round方法返回與參數(shù)最接近的長(zhǎng)整
數(shù),參數(shù)加1/2后求其floor
4.shortsi=1;si=si+1;有什么錯(cuò)?shortsi=l;sl+=1;有什么錯(cuò)
答:shortsi=1;si=si+1;(sl+1運(yùn)算結(jié)果是int型,需要強(qiáng)制轉(zhuǎn)換類型)shortsi=1;
si+=1;(可以正確編譯)分析java的|'|動(dòng)類型轉(zhuǎn)換?默認(rèn)是血型。
5.用最有效率的方法算出2乘以8等於幾
答:2?3
6.以下哪一個(gè)不是賦值符號(hào)?
A.+=B.?=C.?<=D.?>=
參考答案:
A彳艮明顯是賦值符號(hào)
8.<<=左移賦值
C.不是
D.?>=無(wú)符號(hào)右移賦值,左邊空出的位以。填充
<<=左移賦值;>>=右移賦值
例1:
vartemp;
temp=-14?>2
結(jié)果為:1073741820。變量temp的值-14(即二進(jìn)制的111111111111111111111111
11110010),右移兩位后等于1073741820(即二進(jìn)制的001111111111111111111111
11111100)?
例2:
vartemp;
temp=-14;
temp?=2
結(jié)果:temp的值為-4:因?yàn)?4(即二進(jìn)制的11110010)右移兩位后等于-4(即二進(jìn)制
的11111100)o
7.繼承時(shí)類的執(zhí)行順序問(wèn)題,先后打印順序。
publicclassParent{
//1
staticinta=1;
U2
static
{
a=10;
System.out.println("parentstaticcode");
)
//4
publicParent(){
System.out.println("Parentconstructor”);
System.out.println("Parenta="+a);
)
publicstaticvoidmain(String[]args){
System.out.println("*****************");
Parentc=newChild();
)
)
publicclassChildextendsParent{
staticinta=2;
//3
static{
a=20;
System.out.println("childstaticcode");
)
publicChild(){
System.out.println("Childconstructor");
System.out.println("Childvara="+a);
}
)
輸出結(jié)果:
parentstaticcode
*****************
childstaticcode
Parentconstructor
Parenta=10
Childconstructor
Childvara=20
由此可看出在還沒(méi)有實(shí)例化類的時(shí)候(注意*號(hào))已經(jīng)執(zhí)行了static代碼塊。順序
是先父類后子類.然后才調(diào)用父類的構(gòu)造方法,再調(diào)用子類的構(gòu)造方法.就是這個(gè)
順序了.
8.內(nèi)部類的實(shí)現(xiàn)方式
publicclassOuterClass{
staticinta;
intb;
privateclasslnnerClass{
publiclnnerClass(){
System.out.println("lnnerClasscreate:"+a);
)
)
publicOuterClass(){
InnerClassic=newlnnerClass();
System.out.println("OuterClasscreate");
)
publicstaticvoidmain(String[]args){
OuterClassoc=newOuterClass();
)
)
總結(jié):
一.靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員。
二.靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問(wèn)外部類的靜態(tài)變量,而不可訪問(wèn)外部類的
非靜態(tài)變量;
三.非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問(wèn)外部類的非靜態(tài)變量
9.float
publicclassTest2
EHS{
publicstaticvoidmain(String[]args)
軸(
floata=3.4;
L}
這個(gè)簡(jiǎn)單的程序能不能編譯通過(guò)呢?
其實(shí)是不能的。原因是精度問(wèn)題,應(yīng)該用強(qiáng)制類型轉(zhuǎn)換.
floata=(float)3.4;
再來(lái)看看這個(gè)能不能編譯通過(guò)
publicclassTest2
□E(
publicstaticvoidmain(String[]args)
由由{
Floata=newFloat(3.4);
卜}
L}
其實(shí)是沒(méi)問(wèn)題的。
我們來(lái)看看Float類的源代碼吧:
日田publicFloat(doublevalue){
this.value=(float)value;
L}
其中有一個(gè)構(gòu)造方法在方法里已經(jīng)進(jìn)行了向下轉(zhuǎn)型。
所以這樣寫是沒(méi)有問(wèn)題的.
publicclassTest2
(
publicstaticvoidmain(String[]args)
Floata=newFloat(3.4);
System.out.println(a.SIZE);
a=newFloat(34000);
System.out.println(a.SIZE);
)
)
輸出為:32(float值的字節(jié)數(shù))
我們先來(lái)看看JDK的解釋吧.
publicstaticfinalintSIZE
Thenumberofbitsusedtorepresentafloatvalue.
意思是說(shuō):通常去描述一個(gè)float值的位數(shù).
這個(gè)是一個(gè)常量,來(lái)看看源碼吧:
publicstaticfinalintSIZE=32;
finalint變量一旦被定義就不能被改變
10.繼承重寫訪問(wèn)權(quán)限
classA{
protectedintmethodi(inta,intb){return0;}
}
WhichtwoarevalidinaclassthatextendsclassA?(Choosetwo)
A.publicintmethodi(inta,intb){return0;}
B.privateintmethodi(inta,intb){return0;}
C.privateintmethodi(inta,longb){return0;}
D.publicshortmethodi(inta,intb){return0;}
E.staticprotectedintmethod1(inta,intb){return0;}
此題考查的是繼承重寫問(wèn)題.
當(dāng)一個(gè)子類重寫父類的方法時(shí),重寫的方法的訪問(wèn)權(quán)限
必須大于等于父類的訪問(wèn)權(quán)限.
在此題中父類中的方法訪問(wèn)權(quán)限為protected,子類只能是
protected或public.這時(shí)A是符合題意的.
由于選項(xiàng)C的形參和父類的不一樣,沒(méi)有重寫的效果,所以
在子類出現(xiàn)也是沒(méi)問(wèn)題的.
所以此題選:AC
11.繼承重寫
publicclassA{
//3
publicA(){
a1();
)
publicvoida1(){
System.out.println("A-a1");
)
)
publicclassBextendsA{
intbb=0;
//2
publicB(){
//5
bb=1000;
)
//4
publicvoida1(){
System.out.println("bbisn+bb);
System.out.println("B-a1");
)
publicstaticvoidmain(String[]args){
newB();
)
)
答案:
bbis0
B-al
看看執(zhí)行順序就明白了.
在方法被al()被重寫的情況下,父類的al是沒(méi)有機(jī)會(huì)
被調(diào)用的.
12.繼承&&訪問(wèn)權(quán)限〃選111能正確賦值的:
publicclassA{
privateinta;
publicintchange(intm){
returnm;
)
)
publicclassBextendsA{
publicintb;
publicstaticvoidmain(String[]args){
Aaa=newA();
Bbb=newB();
intk;
//px
在px處可以正確賦值的有:
Ak=m;
Bk=b;//b是static時(shí)可以
Ck=aa.a;〃當(dāng)a是非Private修飾時(shí)可以
Dk=bb.change(30);
Ek=bb.a〃當(dāng)a是非Private修飾時(shí)可以
選D
13.for語(yǔ)句執(zhí)行順序
publicclassForTest
(
staticbooleanfoo(charc)
(
System.out.println(c);
returntrue;
)
publicstaticvoidmain(String[]args)
(
inti=0;
for(foo(,A');foo('B,)&&(i<2);foo('C'))
(
i++;
foo(D');
此題結(jié)果為:ABDCBDCB
這道題考查的for循環(huán)的執(zhí)行順序.
for(inti=0;i<10;i++){}
首先先執(zhí)行inti=0;注意這個(gè)只是初始化一次,
就是在第一次的時(shí)候.接著執(zhí)行iv10;
然后執(zhí)行方法體{}里面的內(nèi)容,最后才執(zhí)行i++;
第二次及以后就直接執(zhí)行ivlO;然后方法體;最后
i++;如此順序直到結(jié)束為止.
14.實(shí)例化非static內(nèi)部類
1.publicclassOuter{
2.publicvoidsomeOuterMethod(){
3.//Line3
4.)
5.publicclassInner{}
6.publicstaticvoidmain(String[]argv){
7.Outero=newOuter();
8.//Line8
9.)
10.}
WhichinstantiatesaninstanceofInner?
A.newInner();//Atline3
B.newInner();//Atline8
C.newo.Inner();//Atline8//o.newInner();
D.newOuter.Inner();//Atline8〃靜態(tài)內(nèi)部類
出:題選A.
15.內(nèi)部類的幾種實(shí)例化方法
內(nèi)部類的實(shí)例化可以在普通方法里也可以在static方法里實(shí)例化.
如下:
publicclassOuter
(
Inneri=newOuter.Inner();
publicvoidmethod()
(
newInner();
)
publicclassInner{
}
publicstaticvoidmain(String[Jargs)
(
Outero=newOuter();
Inneri=o.newInner();
}
staticvoida()
(
Outero=newOuter();
Inneri=o.newInner();
16.構(gòu)造函數(shù)與方法
publicclassJtest{
intm=l;
inti=3;
voidJtest(){
m=2;
i=4;
)
publicstaticvoidmain(String[]args){
Jtestapp=newJtest();
System.out.println(app.m+",,,+app.i);
)
)
寫出輸出.
結(jié)果是1,3;
因?yàn)樵谶@里voidJtest();并沒(méi)有并調(diào)用,它只是一個(gè)方法,而非構(gòu)造方法,這樣的編寫是有警告
的,不過(guò)可以運(yùn)行.
17.沒(méi)有類型修飾的構(gòu)造函數(shù)
publicclassJtest{
intm=l;
inti=3;
Jtest(){
m=2;
i=4;
}
publicstaticvoidmain(String[]args){
Jtestapp=newJtest();
System.out.println(app.m+H,H+app.i);
)
)
寫出輸出:
結(jié)果是2,4;
調(diào)用了構(gòu)造方法,不加修飾符,默認(rèn)訪問(wèn)權(quán)限是packageaccess,在Java里沒(méi)有關(guān)鍵字表示,就是
包內(nèi)的能訪問(wèn),包外就不行了(即使導(dǎo)入也不行).
18.函數(shù)參數(shù)傳遞一臨時(shí)變量
publicclassTest
(
staticvoidoper(intb)
(
b=b+100;
)
publicstaticvoidmain(StringlJargs)
inta=99;
oper(a);
System.out.println(a);
輸出為99.
我們來(lái)分析一下內(nèi)存:
inta=99;首先在棧里面開(kāi)辟一塊空間保存a比如axxxx然后調(diào)用oper(a);這時(shí)把a(bǔ)的值99
賦給intb;b在內(nèi)存里也開(kāi)辟了自己的空間,此時(shí)值也是99.然后執(zhí)行oper(a);方法體,b=b+
100;此時(shí)b的值為199,a的值為99.
19.concatString
publicclassTest{
publicstaticvoidmain(String[]args){
Stringa=newString(nAu);
Stringb=newString("Bu);
oper(a,b);
System.out.print(a+'\"+b);
}
staticvoidoper(Stringc,Stringd){
c.concat(uBn);
d=c;
)
}
此程序輸出:A,B.
原因就是String是final類型的.并不會(huì)被改變.
publicclassTest
(
publicstaticvoidmain(Stringf]args)
(
Stringa=newStringC'A");
Stringb=newString(MBH);
a.concat(,'aa");
System.out.println(a++b);
這個(gè)還是會(huì)輸出A,B
原因同上.
publicclassTest
(
publicstaticvoidmain(String[Jargs)
{
Stringa=newString(*'Au);
Stringb=newString("BH);
a=a.concat("aan);
System.out.println(a++b);
輸出的是Aaa,B。
因?yàn)镾tring是final類型的.所以執(zhí)行到a=a.concat("aa”);會(huì)在heap里新創(chuàng)建一個(gè)對(duì)象,而a
指向它.這是一新的地址洞Stringa這個(gè)已經(jīng)不同了.所以輸出的是后一個(gè).即改變后的值.
20.StringBuffer的append方法
publicclassTest
(
staticvoidoper(StringBufferc,StringBufferd)
(
d=c.append(”B");
}
publicstaticvoidmain(String[]args)
(
StringBuffera=newStringBuffer(nA");
StringBufferb=newStringBuffer("B");
oper(a,b);
System.out.println(a++b);
}
)
此程序會(huì)輸出:AB,B
21.多態(tài)
publicclassTest
(
publicstaticvoidmain(String[]args)
(
Aa=newB();
a.print();
)
)
classA
(
privateinti=1;
publicA()
inti=2;
publicvoidprint()
(
System.out.println(nTheresultis:"+i);
)
)
classBextendsA
(
privateinti=3;
publicB()
(
inti=6;
}
publicvoidprint()
(
System.out.println("Theresultis:"+i);
)
)
輸出結(jié)果是:3
此題考查的是多態(tài)。在這里是父類的引用指向子類的對(duì)象。父類的引用只能訪問(wèn)子類和父類
共有的方法.
執(zhí)行順序是這樣的:
publicclassTest
(
publicstaticvoidmain(Stringf]args)
(
Aa=newB();
a.print();
}
}
classA
(
//2
privateinti=1;
//3
publicA()
(
inti=2;
)
publicvoidprint()
System.out.println(nTheresultis
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度夫妻雙方婚內(nèi)行為監(jiān)督與情感支持合同
- 二零二五年度窯廠魚(yú)塘承包及漁業(yè)資源開(kāi)發(fā)合同
- 二零二五年度環(huán)保產(chǎn)業(yè)實(shí)習(xí)生培養(yǎng)協(xié)議
- 二零二五年度企業(yè)內(nèi)部資料不得外泄保密合同范本
- 二零二五年度工地安全文明施工個(gè)人安全協(xié)議書(shū)
- 二零二五年度門面出租與共享經(jīng)濟(jì)合作協(xié)議
- 2025年度電力設(shè)施延期建設(shè)合同
- 二零二五年度裝飾公司施工人員安全生產(chǎn)責(zé)任勞動(dòng)合同
- 二零二五年度智能交通管理系統(tǒng)合作開(kāi)發(fā)協(xié)議
- 美甲店聘用合同-二零二五年度技師崗位技能考核協(xié)議
- 九年級(jí)化學(xué)人教版跨學(xué)科實(shí)踐3水質(zhì)檢測(cè)及自制凈水器教學(xué)設(shè)計(jì)
- 床上用品項(xiàng)目實(shí)施方案和售后服務(wù)方案(技術(shù)方案)
- 《農(nóng)產(chǎn)品食品檢驗(yàn)員職業(yè)技能培訓(xùn)(中高級(jí))》課程標(biāo)準(zhǔn)
- 公路沖擊碾壓應(yīng)用技術(shù)指南
- 安全文明施工獎(jiǎng)罰明細(xì)表
- 育英學(xué)校與社區(qū)及家長(zhǎng)聯(lián)系制度
- 北京豐臺(tái)區(qū)2024第二批事業(yè)單位招聘55人歷年公開(kāi)引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(kù)(共500題)答案詳解版
- 枯死松樹(shù)清理服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- MOOC 針灸學(xué)-經(jīng)絡(luò)養(yǎng)生與康復(fù)-暨南大學(xué) 中國(guó)大學(xué)慕課答案
- 第4課 中古時(shí)期的亞洲(教學(xué)課件)-【中職專用】《世界歷史》同步課堂(同課異構(gòu))(高教版2023?基礎(chǔ)模塊)
- 《監(jiān)理企業(yè)安全責(zé)任清單(2.0版)參考模板》
評(píng)論
0/150
提交評(píng)論