JAVA常見問題總計 高級類特性1

  1. java類是否可以多繼承掘鄙,怎么實現(xiàn)多繼承院究?

    答:java沒有多繼承洽瞬,但可以通過接口的形式來達到多繼承的目地。

  2. 我比較兩個String總是false业汰,但是它們明明都是"abc" 伙窃!

    答:比較String一定要使用 equalsequalsIgnoreCase 方法,不要使用 “==” 样漆!
      
      == 比較的是兩個引用(變量)是否指向了同一個對象为障,而不是比較其內(nèi)容。

  3. int 和 Integer 有什么區(qū)別

    答:Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)放祟。
    Int是java的原始數(shù)據(jù)類型鳍怨,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類跪妥。

    原始類型封裝類鞋喇,booleanBoolean,charCharacter眉撵,byteByte侦香,shortShort,intInteger纽疟,longLong罐韩,floatFloat,doubleDouble

    引用類型和原始類型的行為完全不同污朽,并且它們具有不同的語義散吵。
    引用類型和原始類型具有不同的特征和用法,它們包括:大小速度 問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲矾睦,當引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值: 對象引用實例變量的缺省值為 null晦款,而原始類型實例變量的缺省值與它們的類型有關(guān).

  4. 定義類A 和類B 如下:【基礎(chǔ)】

    class A {
        int a=1;
        double d=2.0;
        void show(){
            System.out.println("Class A: a="+a +"\td="+d);
        }
    }
    class B extends A{
        float a=3.0f;
        String d="Java program.";
        void show(){
            super.show( );
            System.out.println("Class B: a="+a +"\td="+d);
        }
    }
    

(1) 若在應(yīng)用程序的 main 方法中有以下語句,則輸出的結(jié)果如何顷锰?

```
A a=new A();
a.show();
```

(2) 若在應(yīng)用程序的 main 方法中定義類B 的對象b柬赐,則輸出的結(jié)果如何亡问?

```
A b=new B();
b.show();
```
答:輸出結(jié)果為:
1)Class A: a=1 d=2.0 
2)Class A: a=1 d=2.0
Class B: a=3.0 d=Java program官紫。
  1. 下列代碼運行結(jié)果如何?

    public void testString(){
        String str1 = "尚硅谷";
        String str2 = "尚硅谷";
        String str3 = new String("尚硅谷");
        System.out.println(str1 == str2);//true
        System.out.println(str1 == str3);//false
        System.out.println(str1.equals(str3));//true
        str1 = "尚硅谷atguigu.com";
        String str4 = "atguigu.com";
        String str5 = "尚硅谷" + "atguigu.com";
        System.out.println(str1 == str5);//true
        
        String str6 = (str2 + str4).intern();
        System.out.println(str1 == str6);//false  ---->true
    }
    
  2. 重載(overload)和重寫(override州藕,有的書也叫做“覆蓋”)的區(qū)別束世?Overload的方法是否可以改變返回值的類型?

    答:方法的重寫Override和重載Overload是Java多態(tài)性的不同表現(xiàn)床玻。
    重寫Override是父類與子類之間多態(tài)性的一種表現(xiàn)毁涉,
    重載Overload是一個類中多態(tài)性的一種表現(xiàn)。
    如果在子類中定義某方法與其父類有相同的名稱和參數(shù)锈死,我們說該方法被重寫 (Override)贫堰。子類的對象使用這個方法時,將調(diào)用子類中的定義待牵,對它而言其屏,父類中的定義如同被"屏蔽"了。
    如果在一個類中定義了多個同名的方法缨该,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型偎行,則稱為方法的重載(Overload)。Overloaded的方法是可以改變返回值的類型贰拿。

  3. 寫出程序結(jié)果

    class Test
    {
        Test()
        {
            System.out.println("Test");
        }
    }
    class Demo extends Test
    {
        Demo()
        {
            //super();
            System.out.println("Demo");
        }
        public static void main(String[] args)
        {
            new Demo();
            new Test();
        }
    }
    
    // 運行結(jié)果
    Test
    Demo
    
    Test
    
  1. 寫出程序結(jié)果(多態(tài))

    class  A {
        private int a;
        public void setA(int a){
             this.a = a;
       }
       public int getA(){
           return a;
       }
    }
    class B extends A {
     private int a;
        public void setA(int a){
            this.a = a;
       }
       // public int getA(){
     //    return a;
        //}
    }
    public class TestPerson {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            A c = new B();
    
            c.setA(5);
    
            System.out.println(c.getA());
            
        }
    
    }
    //執(zhí)行結(jié)果:
    0
    
  2. 寫出程序結(jié)果

    class Fu
    {
        boolean show(char a)
        {
            System.out.println(a);
            return true;
        }
    }
    class Demo extends Fu
    {
        public static void main(String[] args)
        {
            int i=0;
            Fu f=new Demo();
            Demo d=new Demo();
            for(f.show('A'); f.show('B')&&(i<2);f.show('C'))
            {
                i++;
                d.show('D');
            }   
        }
        boolean show(char a)
        {
            System.out.println(a);
            return false;
        }
    }
    A B
    
  3. 寫出程序結(jié)果:

    class Super
    {
        int i=0;
        public Super(String a)
        {
            System.out.println("A");
            i=1;    
        }
        public Super()
        {
            System.out.println("B");
            i+=2;
        }
    }
    class Demo extends Super
    {
        public Demo(String a)
        {
            //super();
            System.out.println("C");
            i=5;                
        }
        public static void main(String[] args)
        {
            int i=4;
            Super d=new Demo("A");
            System.out.println(d.i);
        }
    }
    執(zhí)行結(jié)果:B C 5
    
  4. 寫出程序結(jié)果:

    interface Inter
    {
        void show(int a,int b);
        void func();
    }
    class Demo
    {
        public static void main(String[] args)
        {
            //補足代碼蛤袒;調(diào)用兩個函數(shù),要求用匿名內(nèi)部類
            Inter in = new Inter()
            {
                public void show(int a,int b)
                {
                
                }
                public void func()
                {
                
                }
            };
    
            in.show(4,5);
            in.func();
            
        }
    }
    
  5. ??選擇題膨更,寫出錯誤答案錯誤的原因妙真,用單行注釋的方式。

    class Demo
    {
         int show(int a,int b){return 0;}
    }
    

    下面那些函數(shù)可以存在于Demo的子類中荚守。

    A.public int show(int a,int b){return 0;}//可以隐孽,覆蓋。
    B.private int show(int a,int b){return 0;}//不可以健蕊,權(quán)限不夠菱阵。
    C.private int show(int a,long b){return 0;}//可以,和父類不是一個函數(shù)缩功。沒有覆蓋晴及,相當于重載。
    D.public short show(int a,int b){return 0;}//不可以嫡锌,因為該函數(shù)不可以和給定函數(shù)出現(xiàn)在同一類中虑稼,或者子父類中琳钉。
    E.static int show(int a,int b){return 0;}//不可以,靜態(tài)只能覆蓋靜態(tài)蛛倦。

  1. 寫出程序結(jié)果:

    class Fu
    {
        int num=4;
        void show()
        {
            System.out.println("showFu");
        }
    }
    class Zi extends Fu
    {
        int num=5;
        void show()
        {
            System.out.println("showZi");
        }
    }
    class T
    {
        public static void main(String[] args)
        {
            Fu f=new Zi();
            Zi z=new Zi();
            System.out.println(f.num); 
            System.out.println(z.num); 
            f.show(); 
            z.show();   
        }
    }
    執(zhí)行結(jié)果:
    4
    5
    showZi
    showZi
    
  2. 寫出程序結(jié)果

    class Super
    {
        int i=0;    
        public Super(String s)
        {
            i=1;    
        }
    }
    class Demo extends Super
    {
        public Demo(String s)
        {
            i=2;            
        }
        public static void main(String[] args)
        {
            Demo d=new Demo("yes");
            System.out.println(d.i);
        }
    }
    //編譯失敗歌懒,因為父類中缺少空參數(shù)的構(gòu)造函數(shù)。
    //或者子類應(yīng)該通過super語句指定要調(diào)用的父類中的構(gòu)造函數(shù)溯壶。
    
  3. 寫出程序結(jié)果

    class Super
    {
        public int get(){return 4;}
    }
    class Demo15 extends Super
    {
        public long get(){return 5;}            
        public static void main(String[] args)
        {
            Super s=new Demo15();
            System.out.println(s.get());
        }
    }
    
    編譯失敗及皂,因為子類父類中的get方法沒有覆蓋。但是子類調(diào)用時候不能明確返回的值是什么類型且改。
    所以這樣的函數(shù)不可以存在子父類中验烧。
    
  4. 繼承時候類的執(zhí)行順序問題,一般都是選擇題,問你將會打印出什么?
    答:

    父類:
    package test;
    public class  FatherClass
    {
        public FatherClass()
        {
            System.out.println("FatherClass Create");
        }
    }
    子類:
    package test;
    import test.FatherClass;
    public class  ChildClass extends FatherClass
    {
        public ChildClass()
        {
            System.out.println("ChildClass Create");
        }
        public static void main(String[] args) 
        {
            FatherClass fc = new FatherClass();
            ChildClass cc = new ChildClass();
        }
    }
    當執(zhí)行如下操作
    C:\>java test.ChildClass
    輸出結(jié)果為:
    FatherClass Create
    FatherClass Create
    ChildClass Create 
    
  5. 觀察下面代碼

    public class OuterClass { 
      private double d1 = 1.0; 
        //insert code here 
    } 
    You need to insert an inner class declaration at line 3.
    Which two inner class declarations are valid?(Choose two.) 
    A. class InnerOne{
         public static double methoda() {return d1;}
       } 
    B. public class InnerOne{
         static double methoda() {return d1;}
       } 
    C. private class InnerOne{
         double methoda() {return d1;}
       } 
    D. static class InnerOne{
         protected double methoda() {return d1;}
       } 
    E. abstract class InnerOne{
         public abstract double methoda();
       } 
    說明如下:
    一.靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員又跛。 故 A碍拆、B 錯
    二.靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問外部類的靜態(tài)變量,而不可訪問外部類的非靜態(tài)變量慨蓝;return d1 出錯感混。 
    故 D 錯
    三.非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問外部類的非靜態(tài)變量。 故 C 正確
    四.答案為C礼烈、E 
    
  6. 觀察下列代碼

1. public class Test {
2.      int x = 12;
3.      public void method(int x) {
4.          x += x;
5.          System.out.println(x);
6.      }
7. }

Given:
34. Test t = new Test();
35. t.method(5);

What is the output from line 5 of the Test class?
A. 5
B. 10
C. 12
D. 17
E. 24

結(jié)果:B
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弧满,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子济丘,更是在濱河造成了極大的恐慌谱秽,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摹迷,死亡現(xiàn)場離奇詭異疟赊,居然都是意外死亡,警方通過查閱死者的電腦和手機峡碉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門近哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鲫寄,你說我怎么就攤上這事吉执。” “怎么了地来?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵戳玫,是天一觀的道長。 經(jīng)常有香客問我未斑,道長咕宿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮府阀,結(jié)果婚禮上缆镣,老公的妹妹穿的比我還像新娘。我一直安慰自己试浙,他們只是感情好董瞻,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著田巴,像睡著了一般钠糊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上固额,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天眠蚂,我揣著相機與錄音煞聪,去河邊找鬼斗躏。 笑死,一個胖子當著我的面吹牛昔脯,可吹牛的內(nèi)容都是我干的啄糙。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼云稚,長吁一口氣:“原來是場噩夢啊……” “哼隧饼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起静陈,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤燕雁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鲸拥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拐格,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年刑赶,在試婚紗的時候發(fā)現(xiàn)自己被綠了捏浊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡撞叨,死狀恐怖金踪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牵敷,我是刑警寧澤胡岔,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站枷餐,受9級特大地震影響靶瘸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一奕锌、第九天 我趴在偏房一處隱蔽的房頂上張望著觉。 院中可真熱鬧,春花似錦惊暴、人聲如沸饼丘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肄鸽。三九已至,卻和暖如春油啤,著一層夾襖步出監(jiān)牢的瞬間典徘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工益咬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逮诲,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓幽告,卻偏偏與公主長得像梅鹦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冗锁,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351