【Java練習題】Java 程序的輸出 | 第十一套(含解析)

這是我參與8月更文挑戰的第5天,活動詳情查看:8月更文挑戰java

難度級別: 中級git

程序

程序一

預測如下 Java 程序的輸出:github

public class Base{
	private int data;
	public Base(){
		data = 5;
	}
	public int getData(){
		return this.data;
	}
}

class Derived extends Base{
	private int data;
	public Derived(){
		data = 6;
	}
	private int getData(){
		return data;
	}
	public static void main(String[] args){
		Derived myData = new Derived();
		System.out.println(myData.getData());
	}
}
複製代碼

a) 6
b) 5
c) 編譯時錯誤
d) 運行時錯誤markdown

點此跳轉到答案svn


程序二

public class Test{
	private int data = 5;
	public int getData() {
		return this.data;
	}
	public int getData(int value) {
		return (data+1);
	}
	public int getData(int... value) {
		return (data+2);
	}
	public static void main(String[] args) {
		Test temp = new Test();
		System.out.println(temp.getData(7, 8, 12));
	}
}
複製代碼

a) 編譯時或運行時錯誤
b) 8
c) 10
d) 7oop

點此跳轉到答案post


程序三

public class Base{
	private int multiplier(int data){
		return data*5;
	}
}

class Derived extends Base{
	private static int data;
	public Derived(){
		data = 25;
	}
	public static void main(String[] args){
		Base temp = new Derived();
		System.out.println(temp.multiplier(data));
	}
}
複製代碼

a) 125
b) 25
c) 運行時錯誤
d) 編譯時錯誤flex

點此跳轉到答案this


問題四

如下關於 finally 塊的說法錯誤的是?url

a) 對於每一個 try 塊,只能有 1 個 finally 塊。
b) 若是程序經過調用 System.exit() 退出,則 finally 塊將不會被執行;
c) 若是在 catch 語句中沒有處理異常,在終止程序以前,JVM 會執行 finally 塊
d) finally 塊包含重要的代碼段,所以 finally 塊中的代碼在 java 中存在/不存在 try 塊的狀況下執行代碼。

點此跳轉到答案


程序五

import java.io.IOException;
import java.util.EmptyStackException;

public class newclass{
	public static void main(String[] args){
		try{
			System.out.printf("%d", 1);
			throw(new Exception());
		}
		catch(IOException e){
			System.out.printf("%d", 2);
		}
		catch(EmptyStackException e){
			System.out.printf("%d", 3);
		}
		catch(Exception e){
			System.out.printf("%d", 4);
		}
		finally{
			System.out.printf("%d", 5);
		}
	}
}
複製代碼

a) 12345
b) 15
c) 135
d) 145

點此跳轉到答案


程序六

public class javaclass{
	static{
		System.out.printf("%d", 1);
	}
	static{
		System.out.printf("%d", 2);
	}
	static{
		System.out.printf("%d", 3);
	}
	private static int myMethod(){
		return 4;
	}
	private int function(){
		return 5;
	}

	public static void main(String[] args){
		System.out.printf("%d", (new javaclass()).function() + myMethod());
	}
}
複製代碼

a) 123
b) 45
c) 12345
d) 1239

點此跳轉到答案


文章後半部分是程序的輸出及解析

9ae3f2f42415ec425ac3df6d87dfc531.jpg


輸出及解析

程序一輸出

答案

(c)
複製代碼

說明

當覆蓋超類的方法時,子類中的方法聲明不能比超類中聲明的方法更嚴格。

程序二輸出

答案

(d)
複製代碼

說明

當您不知道輸入參數的數量但知道參數的類型(在本例中爲 int)時,(int... values) 做爲參數傳遞給方法。當在 main 方法中建立一個新對象時,變量數據被初始化爲 5。對具備屬性 (7, 8 ,12) 的 getData() 方法的調用會調用第三個 getData() 方法,該方法會增長值數據變量乘以 2 並返回 7。

程序三輸出

答案

(d)
複製代碼

說明

因爲方法乘數被標記爲私有,所以它不是繼承的,所以對派生者不可見。

程序四答案

回答 :

(d)
複製代碼

說明

語句(d) 是錯誤的,由於finally 塊只有在try 或catch 塊成功時才能存在。使用沒有 try 塊的 finally 塊會產生編譯時錯誤。

程序五答案

回答 :

(d)
複製代碼

說明:

catch 語句的編寫順序是:更具體到更通常。在上面的代碼中,拋出了一個 Exception 類型的新異常。首先,代碼跳轉到第一個 catch 塊以查找異常處理程序。可是因爲 IOException 不是同一類型,它向下移動到第二個 catch 塊,最後移動到第三個,在那裏捕獲異常並打印 4。所以,答案是 145,由於按照塊的執行順序是:try->catch->finally。

程序六答案

回答 :

(d)
複製代碼

說明:

Java 中的靜態塊甚至在編譯器調用 main 以前就已執行。在main方法中,新建一個javaclass對象,調用它的function()方法返回5,靜態方法myMethod()返回4,即4+5=9。所以,程序的輸出爲1239,由於 123 甚至在 main 方法執行以前就被打印在控制檯上,而且 main 方法在執行時返回 9。


以上就是本篇文章的全部內容了

相關文章:

【Java練習題】Java程序的輸出 | 第一套(含解析)
【Java練習題】Java程序的輸出 | 第二套(含解析)
【Java練習題】Java程序的輸出 | 第三套(含解析)
【Java練習題】Java程序的輸出 | 第四套(含解析)
【Java練習題】Java程序的輸出 | 第五套(含解析)
【Java練習題】Java程序的輸出 | 第六套(含解析)
【Java練習題】Java程序的輸出 | 第七套(含解析)
【Java練習題】Java程序的輸出 | 第八套(含解析)
【Java練習題】Java程序的輸出 | 第九套(含解析)
【Java練習題】Java 程序的輸出 | 第十套(垃圾回收)

我已經寫了很長一段時間的技術博客,這是個人一篇技術文章/教程。但願大家會喜歡!這裏彙總了個人所有原創及做品源碼:GitHub,還有這是我最近剛搭建的博客:haiyong.site,裏面還沒啥內容,放了一些HTML小遊戲,有興趣的能夠嘗試一下,源碼能夠本身F12複製,或者直接找我要。

若是你真的從這篇文章中學到了一些新東西,喜歡它,收藏它並與你的小夥伴分享。🤗最後,不要忘了❤或📑支持一下哦

相關文章
相關標籤/搜索