隨筆 - 9, 文章 - 0, 評論 - 2, 引用 - 0
          數據加載中……

          Java_SE基本概念

          1、面向對象的特征有哪些方面   

          (1).抽象:
          抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。
          (2).
          繼承:
          繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。
          (3).
          封裝:
          封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。
          (4). 
          多態性:
          多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。


          2
          String是最基本的數據類型嗎?
          基本數據類型包括byteintcharlongfloatdoublebooleanshort
          java.lang.String
          類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節省空間,我們應該用StringBuffer


          3
          int  Integer 有什么區別
          Java 
          提供兩種不同的類型:引用類型和原始類型(或內置類型)。Intjava的原始數據類型,Integerjavaint提供的封裝類。Java為每個原始類型提供了封裝類。
          原始類型封裝類
          booleanBoolean
          charCharacter
          byteByte
          shortShort
          intInteger
          longLong
          floatFloat
          doubleDouble
          引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關。


          4
          String StringBuffer的區別
          JAVA
          平臺提供了兩個類:StringStringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數據。這個String類提供了數值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數據要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態構造字符數據。


          5
          、運行時異常與一般異常有何異同?
          異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常

           

          6、說出ArrayList,Vector, LinkedList的存儲性能和特性
          ArrayList
          Vector都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。

           

          7Collection  Collections的區別。 
          Collection
          是集合類的上級接口,繼承與他的接口主要有Set List.
          Collections
          是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。


          8
          &&&的區別。 
          &
          是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。


          9
          HashMapHashtable的區別。 
          HashMap
          Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在于HashMap允許空(null)鍵值(key,由于非線程安全,效率上可能高于Hashtable
          HashMap
          允許將null作為一個entrykey或者value,而Hashtable不允許。
          HashMap
          Hashtablecontains方法去掉了,改成containsvaluecontainsKey。因為contains方法容易讓人引起誤解。 
          Hashtable
          繼承自Dictionary類,而HashMapJava1.2引進的Map interface的一個實現。
          最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。 
          Hashtable
          HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。


          10
          final, finally, finalize的區別。 
          final 
          用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
          finally
          是異常處理語句結構的一部分,表示總是執行。
          finalize
          Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。


          11
          sleep()  wait() 有什么區別
              sleep
          是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。
          wait
          Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。


          12
          OverloadOverride的區別。Overloaded的方法是否可以改變返回值的類型?
          方法的重寫Overriding和重載OverloadingJava多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)Overloaded的方法是可以改變返回值的類型。


          13
          errorexception有什么區別?
          error 
          表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。
              exception 
          表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。

           

          14、同步和異步有何異同,在什么情況下分別使用他們?舉例說明。
          如果數據將在線程間共享。例如正在寫的數據以后可能被另一個線程讀到,或者正在讀的數據可能已經被另一個線程寫過了,那么這些數據就是共享數據,必須進行同步存取。
          當應用程序在對象上調用了一個需要花費很長時間來執行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程,在很多情況下采用異步途徑往往更有效率。


          15
          abstract classinterface有什么區別?
          聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
          接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口。


          16
          heapstack有什么區別。
          棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照后進先出的方式進行處理。
          堆是棧的一個組成元素

           

          17Static Nested Class  Inner Class的不同。 
          Static Nested Class
          是被聲明為靜態(static)的內部類,它可以不依賴于外部類實例被實例化。而通常的內部類需要在外部類實例化后才能實例化。

          18
          、什么時候用assert 
          assertion(
          斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經處于不正確的狀態下,系統將給出警告或退出。一般來說,assertion用于保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟件發布后,assertion檢查通常是關閉的。


          19
          GC是什么為什么要有GC? 
          GC
          是垃圾收集的意思(Gabage Collection,內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。 


          20
          short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯
              short s1 = 1; s1 = s1 + 1; s1+1運算結果是int型,需要強制轉換類型)
          short s1 = 1; s1 += 1;
          (可以正確編譯)


          21
          Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 
          Math.round(11.5)==12
          Math.round(-11.5)==-11
          round
          方法返回與參數最接近的長整數,參數加1/2后求其floor.


          22
          String s = new String("xyz");創建了幾個String Object? 
              
          兩個


          23
          、設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序。
          以下程序使用內部類實現線程,對j增減的時候沒有考慮順序問題。
          public class ThreadTest1{
            private int j;
            public static void main(String args[]){
          ThreadTest1 tt=new ThreadTest1();
          Inc inc=tt.new Inc();
          Dec dec=tt.new Dec();
          for(int i=0;i<2;i++){
          Thread t=new Thread(inc);
          t.start();
          t=new Thread(dec);
          t.start();
          }
          }
            private synchronized void inc(){
          j++;
          System.out.println(Thread.currentThread().getName()+"-inc:"+j);
            }
            private synchronized void dec(){
          j--;
          System.out.println(Thread.currentThread().getName()+"-dec:"+j);
            }
            class Inc implements Runnable{
          public void run(){
          for(int i=0;i<100;i++){
          inc();
          }
          }
            }
            class Dec implements Runnable{
          public void run(){
          for(int i=0;i<100;i++){
          dec();
          }
           }
            }
          }


          24
          Java有沒有goto?
          java中的保留字,現在沒有在java中使用。


          25
          、啟動一個線程是用run()還是start()?
          啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM調度并執行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。 

           

          26、給我一個你最常見到的runtime exception
          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

           

          27、接口是否可繼承接口抽象類是否可實現(implements)接口抽象類是否可繼承實體類(concrete class)?
          接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。


          28
          List, Set, Map是否繼承自Collection接口?
              ListSet是,Map不是

           

          29abstractmethod是否可同時是static,是否可同時是native,是否可同時是synchronized?
              都不能
          30
          、數組有沒有length()這個方法? String有沒有length()這個方法?
          數組沒有length()這個方法,有length的屬性。String有有length()這個方法。


          31
          Set里的元素是不能重復的,那么用什么方法來區分重復與否呢是用==還是equals()? 它們有何區別?
          Set
          里的元素是不能重復的,那么用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等。
              equals()
          ==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。


          32
          、構造器Constructor是否可被override?
          構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading


          33
          、是否可以繼承String?
          String類是final類故不可以繼承。


          34
          swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
          switch
          expr1)中,expr1是一個整數表達式。因此傳遞給 switch  case 語句的參數應該是 int short char 或者 bytelong,string 都不能作用于swtich


          35
          try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
          會執行,在return前執行。


          36
          、編程題用最有效率的方法算出2乘以8等於幾
          2 << 3


          37
          、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
          不對,有相同的hash code


          38
          、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞? 
          是值傳遞。Java 編程語言只有值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的。


          39
          、當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
          不能,一個對象的一個synchronized方法只能由一個線程訪問。


          40
          、編程題寫一個Singleton出來。
          Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。
          一般Singleton模式通常有幾種種形式:
          第一種形式定義一個類,它的構造函數為private的,它有一個staticprivate的該類變量,在類初始化時實例話,通過一個publicgetInstance方法獲取對它的引用,繼而調用其中的方法。
          public class Singleton {
          private Singleton(){}
                //在自己內部定義自己一個實例,是不是很奇怪?
                //注意這是private 只供內部調用
                private static Singleton instance = new Singleton();
                //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  
                public static Singleton getInstance() {
                  return instance;   
                } 
              } 
              
          第二種形式
          public class Singleton { 
            private static Singleton instance = null;
            public static synchronized Singleton getInstance() {
            //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     
            //使用時生成實例,提高了效率!
            if (instance==null)
              instancenew Singleton();
          return instance; 
            

          其他形式:
          定義一個類,它的構造函數為private的,所有方法為static的。
          一般認為第一種形式要更加安全些 

           

          41Java的接口和C++的虛類的相同和不同處。
          由于Java不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現代碼。當一個類實現了接口以后,該類要實現接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態下面都是public static,所有方法默認情況下是public.一個類可以實現多個接口。


          42
          Java中的異常處理機制的簡單原理和應用。
          JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,并自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。


          43
          、垃圾回收的優點和原理。并考慮2種回收機制。
          Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由于有個垃圾回收機制,Java中的對象不再有"作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。


          44
          、請說出你所知道的線程同步的方法。
          wait():
          使一個線程處于等待狀態,并且釋放所持有的對象的lock
          sleep():
          使一個正在運行的線程處于睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
          notify():
          喚醒一個處于等待狀態的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。
          Allnotity():
          喚醒所有處入等待狀態的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。


          45
          、你所知道的集合類都有哪些?主要方法?
          最常用的集合類是 List  Map List 的具體實現包括 ArrayList  Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List 適用于按數值索引訪問元素的情形。 
          Map 
          提供了一個更通用的元素存儲方法。 Map 集合類用于存儲元素對(稱作""""),其中每個鍵映射到一個值。


          46
          、描述一下JVM加載class文件的原理機制?
          JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。


          47
          char型變量中能不能存貯一個中文漢字?為什么
          能夠定義成為一個中文的,因為java中以unicode編碼,一個char16個字節,所以放一個中文是沒問題的。


          48
          、多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么? 
          多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口 
          同步的實現方面有兩種,分別是synchronized,waitnotify

           

          49、線程的基本概念、線程的基本狀態以及狀態之間的關系
          線程指在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。
          Java
          中的線程有四種狀態分別是:運行、就緒、掛起、結束。

           

          50、簡述synchronizedjava.util.concurrent.locks.Lock的異同 
          主要相同點:Lock能完成synchronized所實現的所有功能
          主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

           

          51JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?
          Java通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實例。當一個方法出現異常后便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常并進行處理。Java的異常處理是通過5個關鍵詞來實現的:trycatchthrowthrowsfinally。一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。
          try來指定一塊預防所有"異常"的程序。緊跟在try程序后面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。
          throw
          語句用來明確地拋出一個"異常"
          throws
          用來標明一個成員函數可能拋出的各種"異常"
          Finally
          為確保一段代碼不管發生什么"異常"都被執行一段代碼。
          可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"try語句。

          java面試筆試題大匯總(2) []

          52
          、一個".java"源文件中是否可以包括多個類(不是內部類)?有什么限制?
          可以。必須只有一個類名與文件名相同。

           

          53java中有幾種方法可以實現一個線程?用什么關鍵字修飾同步方法? stop()suspend()方法為何不推薦使用?
          有兩種實現方法,分別是繼承Thread類與實現Runnable接口
          synchronized關鍵字修飾同步方法
          反對使用stop(),是因為它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處于一種不連貫狀態,那么其他線程能在那種狀態下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標志,指出線程應該活動還是掛起。若標志指出線程應該掛起,便用wait()命其進入等待狀態。若標志指出線程應當恢復,則用一個notify()重新啟動線程。


          54
          java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
          字節流,字符流。字節流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。


          55
          java中會存在內存泄漏嗎,請簡單描述。
          會。如:int i,i2;  return (i-i2);   //when i為足夠大的正數,i2為足夠大的負數。結果會造成溢位,導致錯誤。


          56
          java中實現多態的機制是什么?
          方法的重寫Overriding和重載OverloadingJava多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。


          57
          、垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內存嗎?有什么辦法主動通知虛擬機進行垃圾回收?
          對于GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是"可達的",哪些對象是"不可達的"。當GC確定一些對象為"不可達"時,GC就有責任回收這些內存空間。可以。程序員可以手動執行System.gc(),通知GC運行,但是Java語言規范并不保證GC一定會執行。


          58
          、靜態變量和實例變量的區別?
          static i = 10; //常量
          class A a;  a.i =10;//
          可變


          59
          、什么是java序列化,如何實現java序列化?
          序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
          序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。


          60
          、是否可以從一個static方法內部發出對非static方法的調用?
          不可以,如果其中包含對象的method();不能保證對象初始化.
          61
          、寫clone()方法時,通常都有一行代碼,是什么?

          Clone 有缺省行為,super.clone();他負責產生正確大小的空間,并逐位復制。


          62
          、在JAVA中,如何跳出當前的多重嵌套循環?
          break; return 方法。


          63
          ListMapSet三個接口,存取元素時,各有什么特點?
          List 以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存key-value值,value可多值。

           

          64Anonymous Inner Class (匿名內部類是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)? 
          可以繼承其他類或完成其他接口,在swing編程中常用此方式。

           

          65在什么情況下應該使用關鍵字static

          第一種情況:希望不論產生了多少對象,或者不存在任何對象的情況下,那些特定數據的存儲空間都只有一份。

          第二種情況:希望在某個函數不要和類對象(class object)綁在一起。

           

          66靜態與動態(即非靜態)的區別

          靜態:將某個數據成員/函數聲明為靜態,它就不再局限于所屬的類對象。所以,即使沒有產生任何類對象,外界還是可以調用其靜態函數,或是取用其靜態成員。

           

          動態(即非靜態):要先產生某個對象,再通過該對象取用其數據和函數。所以,動態(非靜態)數據/函數必須知道它們所屬哪一個對象,才有辦法運做。

           

          總結:由于使用靜態函數前并不需要先產生任何對象,所以在靜態函數中不能“直接”取用非靜態數據/函數。如果只是單純地直接調用非靜態函數,而沒有指定某個對象,是行不通的,原因是非靜態數據/函數總是和特定的對象捆綁在一起。

           

          67靜態內部類和非靜態內部類的區別

          區別一:靜態內部類與非靜態內部類相比,主要區別在于靜態內部類沒有了指向外部的引用。這實際上和C++中的嵌套類差不多,Java內部類與C++嵌套類最大的不同就在于是否有指向外部的引用。

           

          區別二:任何非靜態內部類中,都不能有靜態數據,靜態方法或者又一個靜態內部類(內部類的嵌套可以不止一層)。不過靜態內部類中卻可以擁有這一切。

           

          68、簡述邏輯操作(&,|,^)與條件操作(&&,||)的區別。
          區別主要答兩點:a.條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數值型
          b.
          邏輯操作不會產生短路

          posted on 2005-07-10 00:58 阿松 閱讀(370) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 丽江市| 昆山市| 安塞县| 承德市| 德保县| 汽车| 乐昌市| 绍兴市| 丹寨县| 沙雅县| 台南县| 浑源县| 宁河县| 西宁市| 德江县| 巴彦县| 长岭县| 武川县| 横山县| 思南县| 金寨县| 阜康市| 桂东县| 闸北区| 浙江省| 台东市| 上蔡县| 巴彦淖尔市| 丰台区| 诏安县| 江安县| 抚远县| 新宁县| 文安县| 霍山县| 贵溪市| 南城县| 来安县| 张家港市| 防城港市| 内丘县|