菜鳥進階練習(01)

注:力扣選擇題練習總結

上一篇:1260.二維網格的遷移

1、在java中,在同一包內,類Cat裏面有個公有方法sleep(),該方法前有static修飾,則可以直接用Cat.sleep()。

【正確答案】正確;
【解析】可以直接使用本類中的靜態方法,靜態方法可以直接使用 類名.方法。

2、Java Application(Java 應用程序) 源程序文件編譯後的字節碼文件的擴展名是 ?
A: java B: class C: exe D: jar

【正確答案】 B:class;
【解析】A: .java是java程序的源代碼文件;
B:Java文件經過JVM編譯成字節碼文件,即.class文件,將字節碼文件在不同的操作系統中運行時,操作系統再將字節碼文件編譯成機器碼文件。這就是Java跨平臺 ;
C: java可以編寫成.exe,雖然是exe文件,但是不代表是windows可執行文件;
D: 可以打包成jar,需要有jdk支持,通過JVM運行,這個纔是java真正的運行包。這個文件是在生成 JAR 文件的時候自動創建的。[Jar 包,是一個 zip 壓縮包,按一定的標準管理的起來的一組類文件(*.class)].

3、下列關於繼承的描述正確的是( )
A:函數的出口應該儘可能少,最好只有一個出口
B:爲了防止程序中內存漏,應該不使用動態分配內存
C:在函數實現中應該少使用全局變量
D:函數的功能應該單一

【正確答案】CD
【解析】 函數最好要提供多個出口,如果是一個出口,那麼可能死循環。

4、面向對象的主要特徵:封裝,繼承,多態。

結構化設計方法的核心是:自頂向下、逐步求精、結構化和模塊化。

5、Jvm內存區:程序計數器 堆 jvmstack 本地方法棧 方法區。

6、“ ” 引起的存放在字符串常量池;
普通final常量放在棧上;
count 實例變量,在方法外,放在堆上;
加static屬於類,不屬於對象,放在方法區;
方法裏面的放在棧上。

7、String str = new String(“Hello”);
// 方式一 System.out.println(str.equals(“Hello”));
// 方式二 System.out.println(“Hello”.equals(str));

我們更推薦使用 “方式二”。因爲 一旦 str 是 null, 方式一的代碼會拋出異常, 而方式二不會。

8、如果常量池當中存在將要入池的字符串,直接將常量池當中的字符串常量的地址返回;如果不存在,那麼在常量池當中將該字符串入池。

9、下面有關 java final 的基本規則,描述錯誤的是? ( )
A:final修飾的類不能被繼承
B:final修飾的成員變量只允許賦值一次,且只能在類方法賦值
C:final修飾的局部變量即爲常量,只能賦值一次
D:final修飾的方法不允許被子類覆蓋

【正確答案】B
【解析】final修飾的方法,不允許被子類覆蓋。
final修飾的類,不能被繼承。
final修飾的變量,不能改變值。
final修飾的引用類型,不能再指向別的東西,但是可以改變其中的內容。
final修飾的成員變量在賦值時不唯一可以有三種方式。1、在聲明時直接賦值。2、在構造器中賦值。3、在初始代碼塊中進行賦值。

10、要使對象具有序列化能力,則其類應該實現如下哪個接口()。
A. java.io.Serializable
B. java.lang.Cloneable,
C. java.lang.CharSequence
D. java.lang.Comparable

【正確答案】A
【解析】java.io.Serializable接口是一個標誌性接口,在接口內部沒有定義任何屬性與方法。只是用於標誌此接口的實現類可以被序列化與反序列化。
java.lang.Cloneable接口是一個標誌性接口,在接口內部沒有定義任何屬性與方法。以指示Object.clone()方法可以合法地對該類實例進行按字段複製。
java.lang.CharSequence接口對許多不同種類的char序列提供統一的只讀訪問接口。CharSequence是char值的一個可讀序列。
java.lang.Comparable接口,此接口強制對實現它的每個類的對象進行整體排序,此序列被稱爲該類的自然排序

11、在基本 JAVA 類型中,如果不明確指定,整數型的默認是 int 類型,帶小數的默認是 double 類型。

12、不考慮反射,關於私有訪問控制符 private 修飾的成員變量,只能被該類自身所訪問和修改。

13、Math.round(11.5) 等於多少 (). Math.round(-11.5) 等於多少 ( )

【解析】round()方法可以這樣理解:
將括號內的數+0.5之後,向下取值,
比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3;
round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10
即:四捨五入。

14、假設 A 類有如下定義,設 a 是 A 類的一個實例,下列語句調用哪個是錯誤的?()

public class A
{ 
	public int i;
	static String s;
	void method1(){}
	static void method2(){}
}

A、System.out.println(a.i);
B、 a.method1();
C A.method1();
D A.method2();

【正確答案】C
【解析】靜態成員和靜態方法, 可以直接通過類名進行調用;
其他的成員和方法則需要進行實例化成對象之後, 通過對象來調用。

15、下列代碼的執行結果是

public class Test {
	public int aMethod(){
		static int i = 0;
		i++;
		return i;
	}
	public static void main(String args[]){
		Test test = new Test();
		test.aMethod();
		int j = test.aMethod();
		System.out.println(j);
	}
}

A 0
B 1
C 2
D 編譯失敗

【正確答案】D
【解析】static不能修飾局部變量。

16、下列哪一種敘述是正確的()
A abstract修飾符可修飾字段、方法和類
B 抽象方法的body部分必須用一對大括號{ }包住
C 聲明抽象方法,大括號可有可無
D 聲明抽象方法不可寫出大括號

【正確答案】D
【解析】如果寫了大括號就表示這個方法已經實現了(裏邊有沒有代碼沒關係),抽象方法的定義就是沒有體的方法 所有抽象方法有方法體肯定是不對的。

17、下列說法正確的有:()
class中的constructor不可省略
B constructor必須與class同名,但方法不能與class同名
C constructor在一個對象被new 時執行
D 一個class只能定義一個constructor

【正確答案】C
【解析】constructor在一個對象被new時執行。
Constructor簡介:
構造函數(Constructor)在對象創建或者實例化時候被調用的方法。通常使用該方法來初始化數據成員和所需資源。構造器Constructor在js不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。構造函數在C++中如果寫成public屬性那麼可以繼承。

18、選項中哪一行代碼可以替換 //add code here 而不產生編譯錯誤

public abstract class MyClass {
     public int constInt = 5;
     //add code here
     public void method() {
     } 
} 

A public abstract void method(int a);
B consInt=constInt+5;
C public int method();
D public abstract void anotherMethod(){}

【正確答案】A
【解析】
A 是重載。重載的參數名不一樣,就可以
B 類中不能這樣賦值
C 不是重載,和原來的方法一樣的
D 抽象方法不能有方法體

19、哪個關鍵字可以對對象加互斥鎖?()
A. synchronized
B. volatile
C. serialize
D. static

【正確答案】A
【解析】synchronized 關鍵字 : 用來給對象和方法或者代碼塊加鎖,當它鎖定一個方法或者一個代碼塊的時候,同一時刻最多隻有一個線程執行這個段代碼。
volatile:用來確保將變量的跟新操作通知到其他線程,當把變量聲明爲volatile類型後,編譯器與運行時都會注意到這個變量是共享的,因此不會將該變量上的操作與其他內存操作一起重排序。然而,在訪問volatile變量時不會執行加鎖操作,因此也就不會使執行線程阻塞,因此volatile變量是一種比 synchronized關鍵字更輕量級的同步機制。
serialize:Java 對象序列化爲二進制文件。
static關鍵字: static關鍵字可以修飾變量,方法,靜態代碼塊。
靜態變量:
由static修飾的變量稱爲靜態變量
靜態變量屬於類,而不屬於某個對象
靜態變量它的副本只有一個(靜態變量在類中只加載一)
靜態方法:
在靜態方法中只能調用靜態變量和靜態方法
在非靜態方法中,可以調用靜態方法或者變量。
在靜態方法中不能使用this和super關鍵字。
靜態代碼塊
作用:用來給靜態成員變量初始化

20、transient變量和下面哪一項有關()?
A. Serializable
B. Cloneable
C. Runnable
D. Throwable
E. Comparable

【正確答案】A
【解析】一個對象只要實現了Serilizable接口,這個對象就可以被序列化,java的這種序列化模式爲開發者提供了很多便利,我們可以不必關係具體序列化的過程,只要這個類實現了Serilizable接口,這個類的所有屬性和方法都會自動序列化。 這個類的有些屬性需要序列化,而其他屬性不需要被序列化; java 的transient關鍵字爲我們提供了便利,你只需要實現Serilizable接口,將不需要序列化的屬性前添加關鍵字transient,序列化對象的時候,這個屬性就不會序列化到指定的目的地中。


下一篇:菜鳥進階練習(02)
在這裏插入圖片描述

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