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 如何定義一個類?
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6FlaNhHOXlFcwdVYxQmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1MjN3QDMyMTM2AjMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
9.3 如何聲明一個對象引用變量?
答:先定義好類,然後以類名聲明變量。
9.5 構造方法和普通方法之間的差別是什麼?
答:
- 構造方法必須具備和所在類相同的名字。
- 構造方法沒有傳回值類型,甚至連 void也沒有。
- 構造方法是在建立一個對象使用new 操作符時調用的。 構造方法的作用是初始化對象。
9.6 什麼時候類将有一個預設構造方法?
答:當且僅當類中沒有明确定義任何構造方法時才會自動提供。
9.7 哪個操作符用于通路對象的資料域或者調用對象的方法?
答:“.”
9.8 什麼是匿名對象?
答:new聲明對象的時候,沒有引用變量。直接調用執行個體方法的方式。這個對象就是匿名對象
9.9 什麼是NullPointerException?
答:當調用值為 null的引用變量上的方法時會發生此類異常。 在通過引用變量調用一個方法之前,確定先将對象引用賦值給這個變量。
9.10 數組是對象還是基本類型值?數組可以包含對象類型的元素嗎?描述數組元素的預設值。
答:數組是對象,可以包含,就是該類型或對象的初始值
9.11 下面每個程式中有什麼錯誤?
答:
- a.ShowErrors類本身沒有構造函數,無法構造
- b.類中沒有x()執行個體方法,無法調用
- c.c一開始聲明變量,卻沒有聲明應用變量,是以c的值為null,無法調用方法
- d.通a
9.12 下面代碼有什麼錯誤?
答:第3行代碼建立了一個對象,但是String s沒有任何值,無法建構對象
9.13 下面代碼的輸出是什麼?
答: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中的哪些語句是正确的?
答:f是執行個體,是以前四個都正确;F為對象,則隻能通路靜态變量和方法,是以第六句和第八句正确。第五句和第七句錯誤。
9.18 如果合适的話,在出現? 的位置添加 static關鍵字。
答:第一處和第二處
9.19 能否從靜态方法中調用執行個體方法或引用一個執行個體變量?能否從執行個體方法中調用靜态方法或引用一個靜态變量? 下面代碼錯在哪裡?
答:靜态方法中不能調用執行個體方法,執行個體方法可以調用靜态方法,上面代碼就是靜态方法調用了執行個體方法。執行個體方法必須通過建立對象,然後通過對象來調用響應的執行個體方法。
9.20 什麼是通路器方法?什麼是修改器方法?通路器方法和修改器方法的命名習慣是什麼?
答:通路器方法就是通路類中私有資料域的方法,修改器方法就是修改類中私有資料域值的方法。通路器get+資料域名,修改器set+資料域名
9.21 資料域封裝的優點是什麼?
答:便于維護,不易被篡改
9.22 在下面的代碼中, Circle 類中的 radius 是私有的,而 myCircle 是Circle 類的一個對象, 下面髙亮的代碼會導緻什麼問題嗎?如果有問題的話, 解釋為什麼。
答:無法擷取到radius。執行個體無法擷取到類的私有資料域
9.23 描述傳遞基本類型參數和傳遞引用類型參數的差別,并給出下面程式的輸出:
答:基本類型傳遞的是值,引用型傳遞的是指針。count為101,times為0
9.24 顯示下面程式的輸出:
答:第一次交換了,第二次沒有交換。第一次傳入的是引用指針,第二次傳入的是值。25題和26題類似。
9.27 下面的代碼有什麼錯誤?
答:對象數組初始化的時候,将每個對象引用值都初始化為null。dates[0],對應的是null,無法toString
9.28 如果類中僅包含私有資料域并且沒有設定 set 方法.該類可以改變嗎?
答:可以改變,這種類不是為不可變對象。還可以通過引用的方式進行修改
9.29 如果類中的所有資料域是私有的基本資料類型, 并且類中沒有包含任何 set 方法, 該類可以改變嗎?
答:不可以,沒有引用類型對象資料類型。
9.30 下面的類可以改變嗎?
答:可以改變,可以通過get擷取到values,然後指派