Java基礎 (1)
《Java基礎 (1)》由會員分享,可在線閱讀,更多相關(guān)《Java基礎 (1)(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 Java基本 1、一種".java"源文獻中與否可以涉及多種類(不是內(nèi)部類)?有什么限制? 可以有多種類,但只能有一種 public 的類,并且 public 的類名必須與文獻名相一致。 2、說說&和&&的區(qū)別。 &和&&都是邏輯運算符,都是判斷兩邊同步真則為真,否則為假;但是&&當?shù)谝环N條件不成之后,背面的條件都不執(zhí)行了,而&則還是繼續(xù)執(zhí)行,直到整個條件語句執(zhí)行完為止。 3、在 JAVA 中如何跳出目前的多重嵌套循環(huán)? 在 Java 中,要想跳出多重循環(huán),可以在外面的循環(huán)語句前定義一種標號,然后在里層循環(huán)體的代碼中使用帶有標號的 break 語句,即
2、可跳出外層循環(huán)。 4、IO流的分類 根據(jù)解決數(shù)據(jù)類型的不同分為:字符流和字節(jié)流 根據(jù)數(shù)據(jù)流向不同分為:輸入流和輸出流 5、switch 語句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上? 在 switch(expr1)中,expr1只能是一種整數(shù)體現(xiàn)式或者枚舉常量(更大字體),整數(shù)體現(xiàn)式可以是 int 基本類型或 Integer 包裝類型,由于,byte,short,char 都可以隱含轉(zhuǎn)換為 int,按位與操作,因此,這些類型以及這些類型的包裝類型也是可以的。顯然,long 和 String 類型都不符合 switch 的語法規(guī)定,
3、并且不能被隱式轉(zhuǎn)換成 int 類型,因此,它們不能作用于 swtich 語句中。 6、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? 對于 short s1 = 1; s1 = s1 + 1;由于 s1+1運算時會自動提高體現(xiàn)式的類型,因此成果是 int型,再賦值給 short 類型 s1時,編譯器將報告需要強制轉(zhuǎn)換類型的錯誤。 對于 short s1 = 1; s1 += 1; 由于 +=是 java 語言規(guī)定的運算符,java 編譯器會對它進行特殊解決,因此可以對的編譯。 7、char 型變量中
4、能不能存貯一種中文中文?為什么? char 型變量是用來存儲 Unicode 編碼的字符的,unicode 編碼字符集中涉及了中文,因此, char 型變量中固然可以存儲中文啦。但是,如果某個特殊的中文沒有被涉及在 unicode 編碼字符集中,那么,這個 char 型變量中就不能存儲這個特殊中文。補充闡明:unicode 編碼占用兩個字節(jié),因此,char 類型的變量也是占用兩個字節(jié)。 8、用最有效率的措施算出 2 乘以 8 等于幾? 2 << 3,由于將一種數(shù)左移 n 位,就相稱于乘以了2的 n 次方,那么,一種數(shù)乘以8只要將其左移3位即可,而位運算 cpu 直接支持的,效
5、率最高,因此,2乘以8等於幾的最效率的措施是2 << 3。 9、使用 final 核心字修飾一種變量時,是引用不能變,還是引用的對象不能變? 使用 final 核心字修飾一種變量時,是指引用變量不能變,引用變量所指向的對象中的內(nèi)容還是可以變化的。例如,對于如下語句: final StringBuffer a=new StringBuffer("immutable"); 執(zhí)行如下語句將報告編譯期錯誤: a=new StringBuffer(""); 但是,執(zhí)行如下語句則可以通過編譯: a. append(" broken!"); 10、"=="和
6、equals 措施究竟有什么區(qū)別? “==”是看兩個對象與否是同一種對象,也就是兩個對象引用與否指向同一種對象(Java分派的內(nèi)存地址同樣)固然如果用于int,long,double就不是看兩個值與否相等了。 equals()是比較兩個對象的內(nèi)容與否相等,一般如果顧客自己不定義針對自己的類的equals()措施,那么就會使用Object的活著你的類的父類的這個措施。如果你的類里沒有對象引用的域,就不必要覆蓋equals()(注意String域也是對象)String有自己的equals()措施(它已經(jīng)覆蓋了Object的該措施了。 如果你的類中的域有對象引用,那么你需要重寫equals
7、() 11、靜態(tài)變量和實例變量的區(qū)別? 在程序運營時的區(qū)別:實例變量屬于某個對象的屬性,必須創(chuàng)立了實例對象,其中的實例變量才會被分派空間,才干使用這個實例變量。靜態(tài)變量不屬于某個實例對象,而是屬于類,因此也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)立任何實例對象,靜態(tài)變量就會被分派空間,靜態(tài)變量就可以被使用了??傊?,實例變量必須創(chuàng)立對象后才可以通過這個對象來使用,靜態(tài)變量則可以直接使用類名來引用。 12、與否可以從一種 static 措施內(nèi)部發(fā)出對非 static 措施的調(diào)用? 不可以。由于非 static 措施是要與對象關(guān)聯(lián)在一起的,必須創(chuàng)立一種對象后,才可以在該
8、對象上進行措施調(diào)用,而 static 措施調(diào)用時不需要創(chuàng)立對象,可以直接調(diào)用。 13、Integer 與 int 的區(qū)別 int 是 java 提供的8種原始數(shù)據(jù)類型之一。Java 為每個原始類型提供了封裝類,Integer 是 java 為 int 提供的封裝類。int 的默認值為0,而 Integer 的默認值為 null,即 Integer 可以辨別出未賦值和值為0的區(qū)別,int 則無法體現(xiàn)出未賦值的狀況,例如,要想體現(xiàn)出沒有參與考試和考試成績?yōu)?的區(qū)別,則只能使用 Integer。 14、Math.round(11.5)等於多少? Math.round(-11
9、.5)等於多少? Math.ceil(11.3)的成果為12,Math.ceil(-11.3)的成果是-11;floor 的英文意義是地板,該措施就表達向下取整,Math.ceil(11.6)的成果為11,Math.ceil(-11.6)的成果是-12;最難掌握的是round 措施,它表達“四舍五入”,算法為 Math.floor(x+0.5),即將本來的數(shù)字加上0.5后再向下取整,因此,Math.round(11.5)的成果為12,Math.round(-11.5)的成果為-11。 15、請說出作用域 public,private,protected,以及不寫時的區(qū)別
10、這四個作用域的可見范疇如下表所示。 闡明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表達 friendly。 作用域 目前類 同一包(package) 子孫類 其她包(package) public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 16、Overload 和 Override 的區(qū)別。Overloaded 的措施與否可以變化返回值 的類型
11、? Overload 是重載的意思,Override 是覆蓋的意思,也就是重寫。 override 措施不可以變化返回值。 17、構(gòu)造器 Constructor 與否可被 override? 構(gòu)造器 Constructor 不能被繼承,因此不能重寫 Override,但可以被重載 Overload。 18、接口與否可繼承辦口?抽象類與否可實現(xiàn)(implements)接口?抽象類與否可 繼承具體類(concrete class)?抽象類中與否可以有靜態(tài)的 main 措施? 接口可以繼承辦口。抽象類可以實現(xiàn)(implements)接口,抽象類可以繼承具
12、體類。抽象類中可以有靜態(tài)的 main 措施。 19、寫 clone()措施時,一般均有一行代碼,是什么? clone 有缺省行為, super.clone(); 由于一方面要把父類中的成員復制到位,然后才是復制自己的成員。 20、java 中實現(xiàn)多態(tài)的機制是什么? 靠的是父類或接口定義的引用變量可以指向子類或具體實現(xiàn)類的實例對象,而程序調(diào)用的措施在運營期才動態(tài)綁定,就是引用變量所指向的具體實例對象的措施,也就是內(nèi)存里正在運營的那個對象的措施,而不是引用變量的類型中定義的措施。 21、abstract class 和 interface 有什么區(qū)別?
13、兩者的語法區(qū)別: 1.抽象類可以有構(gòu)造措施,接口中不能有構(gòu)造措施。 2.抽象類中可以有一般成員變量,接口中沒有一般成員變量 3.抽象類中可以涉及非抽象的一般措施,接口中的所有措施必須都是抽象的,不能有非抽象的一般措施。 4. 抽象類中的抽象措施的訪問類型可以是 public,protected 和(默認類型),但接口中的抽象措施只能是 public 類型的,并且默認即為 public abstract 類型。 5.抽象類中可以涉及靜態(tài)措施,接口中不能涉及靜態(tài)措施 6.抽象類和接口中都可以涉及靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變
14、量只能是 public static final 類型,并且默認即為 public static final 類型。 7. 一種類可以實現(xiàn)多種接口,但只能繼承一種抽象類。 兩者在應用上的區(qū)別: 接口更多的是在系統(tǒng)架構(gòu)設計措施發(fā)揮作用,重要用于定義模塊之間的通信契約。而抽象類在代碼實現(xiàn)方面發(fā)揮作用,可以實現(xiàn)代碼的重用, 22、String 是最基本的數(shù)據(jù)類型嗎? 基本數(shù)據(jù)類型涉及 byte、int、char、long、float、double、boolean 和 short。 java.lang.String 類是 final 類型的,因此不可以繼承這個類
15、、不能修改這個類。 23、String s = "Hello";s = s + " world!";這兩行代碼執(zhí)行后,原始的 String 對象中的內(nèi)容究竟變了沒有? 沒有。由于 String 被設計成不可變(immutable)類,因此它的所有對象都是不可變對象。在這段代碼中,s 原先指向一種 String 對象,內(nèi)容是 "Hello",然后我們對 s 進行了+操作,那么 s 所指向的那個對象與否發(fā)生了變化呢?答案是沒有。這時,s 不指向本來那個對象了,而指向了另一種 String 對象,內(nèi)容為"Hello world!",本來那個對象還存在于內(nèi)存之中,只是 s 這個引用變量不
16、再指向它了。 24、與否可以繼承 String 類? String 類是 final 類故不可以繼承。 25、什么是Java集合API Java集合框架API是用來表達和操作集合的統(tǒng)一框架,它涉及接口、實現(xiàn)類、以及協(xié)助程序員完畢某些編程的算法。簡言之,API在上層完畢如下幾件事: 1. 編程更加省力,提高城程序速度和代碼質(zhì)量 2. 非關(guān)聯(lián)的API提高互操作性 3. 節(jié)省學習使用新API成本 4. 節(jié)省設計新API的時間 5. 鼓勵、增進軟件重用 26、 什么是Iterator,Iterator與ListIterator有什么區(qū)別? Iterator:只
17、能正向遍歷集合,合用于獲取移除元素。 ListIerator:繼承Iterator,可以雙向列表的遍歷,同樣支持元素的修改。 27、 什么是HaspMap和Map?如何使Hashmap同步? Map是接口,Java 集合框架中一部分,用于存儲鍵值對,HashMap是用哈希算法實現(xiàn)Map的類。 HashMap可以通過Map m = Collections.synchronizedMap(hashMap)來達到同步的效果。 28、 為什么Vector類覺得是廢棄的或者是非官方地不推薦使用?或者說為什么我們應當始終使用ArrayList而不是Vector 你應當使用ArrayList
18、而不是Vector是由于默認狀況下你是非同步訪問的,Vector同步了每個措施。同步單個的操作也不安全(如果你迭代一種Vector,你還是要加鎖,以避免其他線程在同一時刻變化集合)。并且效率更慢。固然同樣有鎖的開銷雖然你不需要,這是個很糟糕的措施在默認狀況下同步訪問。你可以始終使用Collections.sychronizedList來裝飾一種集合。 事實上Vector結(jié)合了“可變數(shù)組”的集合和同步每個操作的實現(xiàn)。這是此外一種設計上的缺陷。Vector尚有些遺留的措施在枚舉和元素獲取的措施,這些措施不同于List接口,如果這些措施在代碼中程序員更趨向于想用它。盡管枚舉速度更快,但是她們不能檢
19、查如果集合在迭代的時候修改了,這樣將導致問題。盡管以上諸多因素,oracle也從沒宣稱過要廢棄Vector. 29、 Java常用的設計模式? Factory(工廠模式),????? Builder(建造模式),?????? Factory Method(工廠措施模式), Prototype(原始模型模式),Singleton(單例模式),??? Facade(門面模式), Adapter(適配器模式),??? Bridge(橋梁模式),??????? Composite(合成模式), Decorator(裝飾模式),??? Flyweight(享元模式),???? P
20、roxy(代理模式), Command(命令模式),????? Interpreter(解釋器模式), Visitor(訪問者模式), Iterator(迭代子模式),?? Mediator(調(diào)停者模式),??? Memento(備忘錄模式), Observer(觀測者模式),?? State(狀態(tài)模式),???????? Strategy(方略模式), Template Method(模板措施模式), Chain Of Responsibleity(責任鏈模式) 30、 GC是什么? 為什么要有GC GC是垃圾收集的意思(Gabage Collection)。內(nèi)存
21、解決是編程人員容易浮現(xiàn)問題的地方,忘掉或者錯誤的內(nèi)存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象與否超過作用域從而自動回收對象所占的內(nèi)存。 31、 BS與CS的聯(lián)系與區(qū)別。 C/S是Client/Server的縮寫。服務器一般采用高性能的PC、工作站或小型機,并采用大型數(shù)據(jù)庫系統(tǒng),如Oracle、Sybase、Informix或 SQL Server。客戶端需要安裝專用的客戶端軟件。B/S是Brower/Server的縮寫,客戶機上只要安裝一種瀏覽器(Browser),瀏覽器通過Web Server 同數(shù)據(jù)庫進行數(shù)據(jù)交互。 32、 描述一下JVM加
22、載class文獻的原理機制? 在Java中,類裝載器把一種類裝入Java虛擬機中,要通過三個環(huán)節(jié)來完畢:裝載、鏈接和初始化,其中鏈接又可以提成校驗、準備、解析 裝載:查找和導入類或接口的二進制數(shù)據(jù); 鏈接:執(zhí)行下面的校驗、準備和解析環(huán)節(jié),其中解析環(huán)節(jié)是可以選擇的; 校驗:檢查導入類或接口的二進制數(shù)據(jù)的對的性; 準備:給類的靜態(tài)變量分派并初始化存儲空間; 解析:將符號引用轉(zhuǎn)成直接引用; 初始化:激活類的靜態(tài)變量,初始化Java代碼和靜態(tài)Java代碼塊 33、 ArrayList和Vector的區(qū)別?HashMap和Hashtable的區(qū)別? ArrayList
23、與Vector重要從二方面來說: 1.同步性:Vector是線程安全的,也就是說是同步的;而ArrayList是線程序不安全的,不是同步的。 2.數(shù)據(jù)增長:當需要增長時,Vector默認增長為本來一培,而ArrayList卻是本來的一半。 HashMap與HashTable重要從三方面來說: 1.歷史因素:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一種實現(xiàn)。 2.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的。 3.值:只有HashMap可以讓你將空值作為一
24、種表的條目的key或value。 34、 簡介JAVA中的Collection FrameWork(涉及如何寫自己的數(shù)據(jù)構(gòu)造)? Collection FrameWork如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一種Collection代表一組Object,即Collection的元素(Elements)。 Map提供key到value的映射
25、 35、 String與StringBuffer的區(qū)別? String的長度是不可變的,StringBuffer的長度是可變的。如果你對字符串中的內(nèi)容常常進行操作,特別是內(nèi)容要修改時,那么使用StringBuffer。StringBuffer轉(zhuǎn)換成String使用StringBuffer的toString()措施。 36、 談談final,finally,finalize的區(qū)別? final?用于聲明屬性,措施和類,分別表達屬性不可變,措施不可覆蓋,類不可繼承。 finally?是異常解決語句構(gòu)造的一部分,表達總是執(zhí)行。 finalize?是Object類的一種措施,在垃
26、圾收集器執(zhí)行的時候會調(diào)用被回收對象的此措施,可以覆蓋此措施提供垃圾收集時的其她資源回收,例如關(guān)閉文獻等 37、 int 和 Integer 有什么區(qū)別? Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。Int是java的原始數(shù)據(jù)類型,Integer是java為int提供的封裝類。 38、 排序均有哪幾種措施? 排序的措施有:插入排序(直接插入排序、希爾排序),互換排序(冒泡排序、迅速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分派排序(箱排序、基數(shù)排序)。 39、 JAVA語言如何進行異常解決,核心字:throws,throw,try,
27、catch,finally分別代表什么意義?在try塊中可以拋出異常嗎? try語句用來執(zhí)行一段已檢查異常程序。try的背面應涉及一種catch子句來指定你想要捕獲的"異常"類型。 throw語句用來明確地拋出一種"異常"。 throws用來標明一種成員函數(shù)也許拋出的多種"異常"。 finally為保證一段代碼不管發(fā)生什么"異常"都被執(zhí)行一段代碼。 40、 什么是java序列化,如何實現(xiàn)java序列化? 序列化就是一種用來解決對象流的機制,所謂對象流也就是將對象的內(nèi)容進行流化??梢詫α骰蟮膶ο筮M行讀寫操作,也可將流化后的對象傳播于網(wǎng)絡之間。 序列化的實現(xiàn):將需要被序列化
28、的類實現(xiàn)Serializable接口(標記接口),該接口沒有需要實現(xiàn)的措施,implements Serializable只是為了標注該對象是可被序列化的,然后使用一種輸出流(如:FileOutputStream)來構(gòu)造一種ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)措施就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復的話則用輸入流。 41、 說出某些常用的類,包,接口,請各舉5個? 常用的類: StringBuffer,String,Integer,HashMap,Arr
29、ayList,BufferedReader,BufferedWriter,F(xiàn)ileReader,F(xiàn)ileWirter 常用的包: java.lang,java.io,java.util, java.sql,javax.servlet,javax.servlet.http 常用的接口: Collection, List, Map,Set,Iterator,Comparable 42、 List的子類特點? ArrayList : 底層數(shù)據(jù)構(gòu)造是數(shù)組,查詢快,增刪慢,線程不安全,效率高 Vector: 底層數(shù)據(jù)構(gòu)造是數(shù)組,查詢快,增刪慢,線程安全,效率低 LinkedLi
30、st: 底層數(shù)據(jù)構(gòu)造是鏈表,查詢慢,增刪快,線程不安全,效率高 43、 Jdo 是什么? JDO 是 Java 對象持久化的新的規(guī)范,為 java data object 的簡稱,也是一種用于存取某種數(shù)據(jù)倉庫中的對象的原則化 API。 44、多線程: 多線程是指從軟件或者硬件上實現(xiàn)多種線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計算機因有硬件支持而可以在同一時間執(zhí)行多于一種線程,進而提高整體解決性能。具有這種能力的系統(tǒng)涉及對稱多解決機、多核心解決器以及芯片級多解決(Chip-level multithreading)或同步多線程(Simultaneous multithreading
31、)解決器。[1]??在一種程序中,這些獨立運營的程序片段叫作“線程”(Thread),運用它編程的概念就叫作“多線程解決(Multithreading)”。具有多線程能力的計算機因有硬件支持而可以在同一時間執(zhí)行多于一種線程(臺灣譯作“執(zhí)行緒”),進而提高整體解決性能。 45、 多線程編程的好處是什么? 在多線程程序中,多種線程被并發(fā)的執(zhí)行以提高程序的效率,CPU不會由于某個線程需要等待資源而進入空閑狀態(tài)。 46、面向?qū)ο笤O計原則: ?面向?qū)ο笃叽笤O計原則 ?1.?開閉原則?2.里氏替代原則?3.單一職責原則?4.?接口隔離原則?5.依賴倒置原則?6.迪米特原則?7.組合/聚合復用原則
32、 47、簡述分布式: 所謂分布式計算是一門計算機科學,它研究如何把一種需要非常巨大的計算能力才干解決的問題提成許多小的部分,然后把這些部分分派給許多計算機進行解決,最后把這些計算成果綜合起來得到最后的成果。 48、并發(fā): 在操作系統(tǒng)中,并發(fā)是指一種時間段中有幾種程序都處在已啟動運營到運營完畢之間,且這幾種程序都是在同一種解決機上運營,但任一種時刻點上只有一種程序在解決機上運營。在關(guān)系數(shù)據(jù)庫中,容許多種顧客同步訪問和更改共享數(shù)據(jù)的進程。SQL Server 使用鎖定以容許多種顧客同步訪問和更改共享數(shù)據(jù)而彼此之間不發(fā)生沖突。 49、反射技術(shù): 其實就是動態(tài)加載 個指定的類,并獲取該類中的所有的內(nèi)容。 且將字節(jié)碼 件封裝成對象,并將字節(jié)碼 件中的內(nèi)容都封裝成對象,這樣便于操作這些成員。簡樸說:反射技術(shù)可以對 個類進 解剖。 反射的好處:增強了程序的擴展性。 反射的基本環(huán)節(jié): 1、獲得 Class 對象,就是獲取到指定的名稱的字節(jié)碼 件對象。 2、實例化對象,獲得類的屬性、 法或構(gòu)造函數(shù)。 3、訪問屬性、調(diào) 法、調(diào) 構(gòu)造函數(shù)創(chuàng)立對象。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。