錯題整理(選擇)

每天一點錯題- -題目很多是自己刷的,但是有些解析是複製大佬的或者是查閱資料的!


1、下列關於Java語言中String和char的說法,正確的是()
A、String是Java定義的一種基本數據類型。
B、String是以“\0”結尾的char類型的數組char[]。
C、使用equals()方法比較兩個String是否內容一樣(即字符串中的各個字符都一樣)。
D、Char類型在Java語言裏面存儲的是ASCII碼。

D錯誤 char存儲的unicode碼,Unicode編碼佔兩個字節,就是16位,足夠存儲一個漢字。
==是比較地址值是否相等,.equals()方法是比較值是否相等,(選C)

2、下列程序的運行結果

public static void main(String args[]) {
   Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.run();
        System.out.print("ping");
    }
    static void pong() {
        System.out.print("pong");
    }

若調用start,則先執行主線程的,後執行子線程的,即結果爲pingpong
若調用run,相當於函數調用,順序執行,即結果爲pongping

3、根據以下接口和類的定義,要使代碼沒有語法錯誤,則類Hero中應該定義方法( )。

interface Action{  
    void fly();  
}
class Hero implements Action{  //……  }

A、private void fly(){}
B、void fly(){}
C、protected void fly(){}
D、public void fly(){}

接口中的方法默認是public abstract,且子類的訪問權限不能低於父類,父類爲public子類只能爲public

4、下列在Java語言中關於數據類型和包裝類的說法,正確的是()

A、基本(簡單)數據類型是包裝類的簡寫形式,可以用包裝類替代基本(簡單)數據類型
B、long和double都佔了64位(64bit)的存儲空間。
C、默認的整數數據類型是int,默認的浮點數據類型是float。
D、和包裝類一樣,基本(簡單)數據類型聲明的變量中也具有靜態方法,用來完成進制轉化等。

B 整數類型byte(1個字節)short(2個字節)int(4個字節)long(8個字節)字符類型char(2個字節)浮點類型float(4個字節)double(8個字節)
C 默認的浮點類型是double,如果要指明是float,須在後面加f.

5、關於依賴注入,下列選項中說法錯誤的是()
A、依賴注入能夠獨立開發各組件,然後根據組件間關係進行組裝
B、依賴注入使組件之間相互依賴,相互制約
C、依賴注入提供使用接口編程
D、依賴注入指對象在使用時動態注入

依賴注入的動機就是減少組。依賴注入和控制反轉是對同一件事情的不同描述,依賴注入是從應用程序的角度在描述,可以把依賴注入描述完整點:應用程序依賴容器創建並注入它所需要的外部資源;而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的嚮應用程序注入應用程序所需要的外部資源。

6、閱讀如下代碼。 請問,對語句行 test.hello(). 描述正確的有()

class Test {
    public static void hello() {
        System.out.println("hello");
    }
}
public class MyApplication {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test test=null;
        test.hello();
    }
}

能編譯通過,並正確運行,當實例化該類的時候,靜態會被優先加載而且只加載一次,所以不受實例化new Test();影響,只要是使用到了Test類,都會加載靜態hello方法!

7、下列程序輸出:

class Base
{
    public void method()
    {
        System.out.println("Base");
    } 
}
class Son extends Base
{
    public void method()
    {
        System.out.println("Son");
    }

    public void methodB()
    {
        System.out.println("SonB");
    }
}
public class Test01
{
    public static void main(String[] args)
    {
        Base base = new Son();
        base.method();
        base.methodB();
    }
}

A、Base SonB
B、Son SonB
C、Base Son SonB
D、編譯不通過

這句new 了一個派生類,賦值給基類,所以下面的操作編譯器認爲base對象就是Base類型的,Base類中不存在methodB()方法,所以編譯不通過,子類是可以調用父類的方法的。可以Son son=new Base()

8、抽象類與接口,下列說法正確的有?

他人總結:含有abstract修飾符的class即爲抽象類,abstract類不能創建的實例對象。含有abstract方法的類必須定義爲abstract class,abstract class類中的方法不必是抽象的。abstract class
類中定義抽象方法必須在具體
(Concrete)子類中實現,所以,不能有抽象構造方法或抽象靜態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義爲abstract類型。
接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認爲public abstract類型,接口中的成員變量類型默認爲public static final。
下面比較一下兩者的語法區別:
1.抽象類可以有構造方法,接口中不能有構造方法。
2.抽象類中可以有普通成員變量,接口中沒有普通成員變量
3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。
4. 抽象類中的抽象方法的訪問類型可以是public,protected和(默認類型,雖然
eclipse下不報錯,但應該也不行),但接口中的抽象方法只能是public類型的,並且默認即爲public abstract類型。
5. 抽象類中可以包含靜態方法,接口中不能包含靜態方法
6. 抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,並且默認即爲public static final類型。
7. 抽象類中的方法可以是public、protected;接口方法只有public

9、java關鍵字:

1,Java 關鍵字列表 (依字母排序 共50組):
abstract, assert, boolean, break, byte, case, catch, char, class, const(保留關鍵字), continue, default, do, double, else, enum, extends, final, finally, float, for, goto(保留關鍵字), if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14組),Java保留字是指現有Java版本尚未使用,但以後版本可能會作爲關鍵字使用:
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留關鍵字) , const (保留關鍵字) , null

10、集合對象中哪幾個是線程安全的:

簡單記憶線程安全的集合類: 喂!SHE! 喂是指 vector,S是指 stack, H是指 hashtable,E是指:Eenumeration

11、

byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2);  /*語句1*/
b6=b4+b5;    /*語句2*/
b8=(b1+b4);  /*語句3*/
b7=(b2+b5);  /*語句4*/
System.out.println(b3+b6);

下列代碼片段中,存在編譯錯誤的語句是()

1,3,4都錯
數據類型轉換
當使用 +、-、*、/、%、運算操作是,遵循如下規則:
只要兩個操作數中有一個是double類型的,另一個將會被轉換成double類型,並且結果也是double類型,如果兩個操作數中有一個是float類型的,另一個將會被轉換爲float類型,並且結果也是float類型,如果兩個操作數中有一個是long類型的,另一個將會被轉換成long類型,並且結果也是long類型,否則(操作數爲:byte、short、int 、char),兩個數都會被轉換成int類型,並且結果也是int類型。
語句 1 :(b1 + b2) 被轉換爲int類型 但是 b3仍爲 byte ,所以出錯 要麼將b3轉化爲int 要麼將(b1 + b2) 強制轉換爲byte類型。所以語句1錯誤。
語句 2:b4 、b5被聲明final 所以類型是不會轉換, 計算結果任然是byte ,所以 語句2正確。
語句 3:(b1 + b4) 結果仍然轉換成int 所以語句 3 錯誤。
語句 4 : (b2 + b5) 結果仍然轉換爲int , 所以語句4錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章