天天看點

java語言程式設計基礎篇習題_複習題_第九章_個人答案

java語言程式設計基礎篇習題_複習題_第九章

    • 9.1 描述對象和它的定義類之間的關系。
    • 9.2 如何定義一個類?
    • 9.3 如何聲明一個對象引用變量?
    • 9.5 構造方法和普通方法之間的差別是什麼?
    • 9.6 什麼時候類将有一個預設構造方法?
    • 9.7 哪個操作符用于通路對象的資料域或者調用對象的方法?
    • 9.8 什麼是匿名對象?
    • 9.9 什麼是NullPointerException?
    • 9.10 數組是對象還是基本類型值?數組可以包含對象類型的元素嗎?描述數組元素的預設值。
    • 9.11 下面每個程式中有什麼錯誤?
    • 9.12 下面代碼有什麼錯誤?
    • 9.13 下面代碼的輸出是什麼?
    • 9.14 如何為目前時間建立一個 Date? 如何顯示目前時間?
    • 9.15 如何建立一個 Point2D? 假設pi 和 p2 是 Point2D 的兩個執行個體,如何獲得兩點之間的距離?
    • 9.16 哪些包包含類 Date、Random、Point2D、System以及 Math?
    • 9.17 假設 F類在 a中定義,f:是 F的一個執行個體, 那麼 b中的哪些語句是正确的?
    • 9.18 如果合适的話,在出現? 的位置添加 static關鍵字。
    • 9.19 能否從靜态方法中調用執行個體方法或引用一個執行個體變量?能否從執行個體方法中調用靜态方法或引用一個靜态變量? 下面代碼錯在哪裡?
    • 9.20 什麼是通路器方法?什麼是修改器方法?通路器方法和修改器方法的命名習慣是什麼?
    • 9.21 資料域封裝的優點是什麼?
    • 9.22 在下面的代碼中, Circle 類中的 radius 是私有的,而 myCircle 是Circle 類的一個對象, 下面髙亮的代碼會導緻什麼問題嗎?如果有問題的話, 解釋為什麼。
    • 9.23 描述傳遞基本類型參數和傳遞引用類型參數的差別,并給出下面程式的輸出:
    • 9.24 顯示下面程式的輸出:
    • 9.27 下面的代碼有什麼錯誤?
    • 9.28 如果類中僅包含私有資料域并且沒有設定 set 方法.該類可以改變嗎?
    • 9.29 如果類中的所有資料域是私有的基本資料類型, 并且類中沒有包含任何 set 方法, 該類可以改變嗎?
    • 9.30 下面的類可以改變嗎?

9.1 描述對象和它的定義類之間的關系。

答:對象(object)代表現實世界中可以明确辨別的一個實體。類是一個模闆、藍本或者說是合約,用來定義對象的資料域是什麼以及方法是做什麼的。一個對象是類的一個執行個體。 可以從一個類中建立多個執行個體。就好比印鈔票,類就是模子,對象對視印出來的一張張鈔票。

9.2 如何定義一個類?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

9.3 如何聲明一個對象引用變量?

答:先定義好類,然後以類名聲明變量。

9.5 構造方法和普通方法之間的差別是什麼?

答:

  • 構造方法必須具備和所在類相同的名字。
  • 構造方法沒有傳回值類型,甚至連 void也沒有。
  • 構造方法是在建立一個對象使用new 操作符時調用的。 構造方法的作用是初始化對象。

9.6 什麼時候類将有一個預設構造方法?

答:當且僅當類中沒有明确定義任何構造方法時才會自動提供。

9.7 哪個操作符用于通路對象的資料域或者調用對象的方法?

答:“.”

9.8 什麼是匿名對象?

答:new聲明對象的時候,沒有引用變量。直接調用執行個體方法的方式。這個對象就是匿名對象

9.9 什麼是NullPointerException?

答:當調用值為 null的引用變量上的方法時會發生此類異常。 在通過引用變量調用一個方法之前,確定先将對象引用賦值給這個變量。

9.10 數組是對象還是基本類型值?數組可以包含對象類型的元素嗎?描述數組元素的預設值。

答:數組是對象,可以包含,就是該類型或對象的初始值

9.11 下面每個程式中有什麼錯誤?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:

  • a.ShowErrors類本身沒有構造函數,無法構造
  • b.類中沒有x()執行個體方法,無法調用
  • c.c一開始聲明變量,卻沒有聲明應用變量,是以c的值為null,無法調用方法
  • d.通a

9.12 下面代碼有什麼錯誤?

java語言程式設計基礎篇習題_複習題_第九章_個人答案
java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:第3行代碼建立了一個對象,但是String s沒有任何值,無法建構對象

9.13 下面代碼的輸出是什麼?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:main函數聲明自己所在類,建立了對象,初始化了x,boolean初始化的值為false,是以列印的為false

9.14 如何為目前時間建立一個 Date? 如何顯示目前時間?

答:

Date date = new Date();
date.getTime();
           

9.15 如何建立一個 Point2D? 假設pi 和 p2 是 Point2D 的兩個執行個體,如何獲得兩點之間的距離?

public class Test {
	public static void main(String[] args) {
		Point2D p1 = new Point(1,0);
		Point2D p2 = new Point(0,1);
		System.out.println(p1.distance(p2));
	}
}
           

9.16 哪些包包含類 Date、Random、Point2D、System以及 Math?

9.17 假設 F類在 a中定義,f:是 F的一個執行個體, 那麼 b中的哪些語句是正确的?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:f是執行個體,是以前四個都正确;F為對象,則隻能通路靜态變量和方法,是以第六句和第八句正确。第五句和第七句錯誤。

9.18 如果合适的話,在出現? 的位置添加 static關鍵字。

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:第一處和第二處

9.19 能否從靜态方法中調用執行個體方法或引用一個執行個體變量?能否從執行個體方法中調用靜态方法或引用一個靜态變量? 下面代碼錯在哪裡?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:靜态方法中不能調用執行個體方法,執行個體方法可以調用靜态方法,上面代碼就是靜态方法調用了執行個體方法。執行個體方法必須通過建立對象,然後通過對象來調用響應的執行個體方法。

9.20 什麼是通路器方法?什麼是修改器方法?通路器方法和修改器方法的命名習慣是什麼?

答:通路器方法就是通路類中私有資料域的方法,修改器方法就是修改類中私有資料域值的方法。通路器get+資料域名,修改器set+資料域名

9.21 資料域封裝的優點是什麼?

答:便于維護,不易被篡改

9.22 在下面的代碼中, Circle 類中的 radius 是私有的,而 myCircle 是Circle 類的一個對象, 下面髙亮的代碼會導緻什麼問題嗎?如果有問題的話, 解釋為什麼。

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:無法擷取到radius。執行個體無法擷取到類的私有資料域

9.23 描述傳遞基本類型參數和傳遞引用類型參數的差別,并給出下面程式的輸出:

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:基本類型傳遞的是值,引用型傳遞的是指針。count為101,times為0

9.24 顯示下面程式的輸出:

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:第一次交換了,第二次沒有交換。第一次傳入的是引用指針,第二次傳入的是值。25題和26題類似。

9.27 下面的代碼有什麼錯誤?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:對象數組初始化的時候,将每個對象引用值都初始化為null。dates[0],對應的是null,無法toString

9.28 如果類中僅包含私有資料域并且沒有設定 set 方法.該類可以改變嗎?

答:可以改變,這種類不是為不可變對象。還可以通過引用的方式進行修改

9.29 如果類中的所有資料域是私有的基本資料類型, 并且類中沒有包含任何 set 方法, 該類可以改變嗎?

答:不可以,沒有引用類型對象資料類型。

9.30 下面的類可以改變嗎?

java語言程式設計基礎篇習題_複習題_第九章_個人答案

答:可以改變,可以通過get擷取到values,然後指派