Java程式設計第四章作業
1 問答題
1、物件與物件引用的區別是什麼? 請舉例說明
建立物件: new FighterPlane(); (分配在堆上)
宣告一個物件引用: FighterPlane fp ; (分配在棧上)
初始化物件引用: fp = new FighterPlane();
例如:FighterPlane fp = new FighterPlane();
new FighterPlane()建立了一個FighterPlane物件,fp為對FighterPlane物件的引用。
2、物件作為引數傳遞的特點是什麼?請舉例說明
基本資料型別作為引數傳遞是值傳遞,而物件是引用傳遞,當物件作為引數傳遞時,傳遞的是物件的地址。
例如:
class IntClass {
int value;
}
public class Test {
public static void modifyValue(IntClass s, int val){
val = 10;
s.value = val;
}
public static void main(String[] args) {
IntClass a = new IntClass();
int val = 8;
modifyValue(a,val);
System.out.println(a.value);
System.out.println(val);
}
}
輸出結果:
10
8
3、物件初始化順序是怎樣的?請舉例說明
①系統會對資料成員進行預設初始化
②執行資料成員定義處的初始化語句
③呼叫構造方法為資料成員指定初值
例如:
class IntClass {
int value;//自動初始化,預設值為0
//int value = 5;//在定義時指定初值
public IntClass(){}
//定義構造方法將屬性value初始化
public IntClass(int val){
value = val;
}
}
public class IntClassConstructor{
public static IntClass getInstance(){
//呼叫構造方法
IntClass s =new IntClass(8);
//s.value=8
return s;
}
public static void main(String[] args){
IntClass a =new IntClass();
System.out.println(a.value);
a=getInstance();
System.out.println(a.value);
}
}
輸出結果:
0
8
4、類的static欄位與非static欄位的區別是什麼?什麼情況應該使用static修飾符?請舉例說明
用static修飾符修飾的資料成員是不屬於任何一個類的具體物件,而是屬於類的靜態資料成員。它被儲存在類的記憶體區的公共儲存單元中,而不是儲存在某個物件的記憶體區中。因此,一個類的任何物件訪問它時,存取到的都是相同的數值。當物件中出現共享資料時使用static修飾符。
例如:
class IntClass {
static int num = 0;
int value = 5;
public IntClass(){}
public IntClass(int val){
value = val;
}
}
public class IntClassConstructor{
public static IntClass getInstance(){
IntClass s =new IntClass(8);
return s;
}
public static void main(String[] args){
IntClass a =new IntClass();
System.out.println(a.value);
IntClass.num++;
a=getInstance();
a.num++;
System.out.println(a.num);
System.out.println(IntClass.num);
}
}
輸出結果:
5
2
2
5、Java中final修飾符都有什麼作用?請舉例說明
①final修飾屬性,則屬性為常量;
例如:
final int NUM = 20;
NUM = 30; // 編譯錯誤
②final修飾方法,則該方法在子類當中不能被覆蓋(見多型一節),可防止任何繼承類修改此方法,保證了程式的安全性和正確性。例如:
class Parent {
public final void method1(){}//這個方法不能被子類覆蓋
}
class Child extends Parent {
public final void method1(){…}//編譯錯誤
}
③final修飾類,則該類不能被繼承
例如:
class Parent {
final class Person extends Parent{
} //可以繼承Parent類
class Child extends Person{
} //編譯報錯,不能繼承Person類
}
6、Java中float[10] arr; 語句正確麼?為什麼?
錯誤。宣告時不可在方括號內指定陣列大小。
7、Java陣列元素型別為基本資料型別和引用型別時,有什麼不同?請舉例說明
①陣列元素為基本資料型別的情形
例如: int[] arr = new int[10]; //此時分配了陣列空間,每個單元初始化為預設值0
產生一個有10個單元,型別為int的陣列物件,所有單元的初值為0。
②陣列元素為引用型別
例如:String[] example = new String[10]; //物件引用陣列
產生一個具有10個單元的陣列物件,每個單元存放的是1個String物件的引用,所有單元的初值為null,此時並未建立具體的String物件
for(String x: example)
System.out.println(x); 輸出結果為10個null
為陣列物件引用賦值後,才能使用陣列元素,否則丟擲
NullPointerException異常
例如: example[0] = new String(“ab”); //建立String物件,賦值給example[0], 此時example的第一個元素指向String物件,從而可以操縱String物件。
相關文章
- Java程式設計第二章作業Java程式設計
- 程式設計作業——系統管理程式設計
- Python 第一週程式設計作業Python程式設計
- 第十一章程式設計作業程式設計
- C語言程式設計B作業04C語言程式設計
- 3D遊戲程式設計作業93D遊戲程式設計
- jQuery第四章課後作業jQuery
- Java程式設計師—Java職業生涯規劃Java程式設計師
- Linux作業系統之Shell程式設計Linux作業系統程式設計
- 作業系統實驗(一)-Shell程式設計作業系統程式設計
- 作業系統精髓設計原理 程式排程作業系統
- 作業系統實驗1 Shell程式設計作業系統程式設計
- 嵌入式作業6.2 ADC 程式設計程式設計
- 高階語言程式設計作業 10/12程式設計
- 高階語言程式設計作業 11/04程式設計
- 第一次個人程式設計作業程式設計
- 對java面向程式設計的pta 4,5,6次作業的總結Java程式設計
- C語言Socket程式設計(計算機網路作業)C語言程式設計計算機網路
- 高階程式設計語言第2次作業程式設計
- 高階語言程式設計第2次作業程式設計
- 高階程式語言設計第5次作業
- 嵌入式作業5.1 定時器程式設計定時器程式設計
- 旅行,寫作,程式設計程式設計
- 《卓有成效程式設計師》第四章程式設計師
- JAVA程式設計師需要知道的計算機底層基礎10-作業系統載入程式的簡單製作Java程式設計師計算機作業系統
- Java作業系統課設之模擬程式管理系統Java作業系統
- 作業系統第四章-檔案管理作業系統
- 自學程式設計方法論:怎麼學作業系統?程式設計作業系統
- 嵌入式作業6.3 CAN 匯流排程式設計程式設計
- 高階語言程式設計第五次作業程式設計
- Java畢設期末作業原始碼6Java原始碼
- Java 網路程式設計(TCP程式設計 和 UDP程式設計)Java程式設計TCPUDP
- 《Linux程式設計基礎》第四章習題Linux程式設計
- Python通用程式設計 - 第四章:字元編碼Python程式設計字元
- 程式設計師與寫作程式設計師
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 作為Java程式設計師,你遇到過哪些質量很高的Java面試!Java程式設計師面試
- 類似Quartz的分散式Java後臺作業計劃程式:JobRunrquartz分散式Java