日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 类及对象的课后作业_JAVA类和对象课后作业

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 类及对象的课后作业_JAVA类和对象课后作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.使用類的靜態字段和構造函數,我們可以跟蹤某個類所創建對象的個數。請寫一個類,在任何時候都可以向它查詢“你已經創建了多少個對象?”

代碼:

//顯示類

//YiMingLai 2016.10.19

public class lei {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

lei1 a=new lei1();

lei1 b=new lei1();

b.out();

}

}

class lei1{

static int n=0;

lei1(){

n++;

}

public void out(){

System.out.println("你已經創建了"+n+"個對象!");

}

}

2.請輸入并運行以下代碼,得到什么結果?

public class test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Foo obj1=new Foo();

Foo onj2=new Foo();

System.out.println(obj1==obj2);

}

}

class Foo{

int value=100;

}

結果錯誤,輸出不出來。

原因:

當“==”施加于原始數據類型變量時,是比較變量所保存的數據是否相等

當“==”施加于引用類型變量時,是比較這兩個變量是否引用同一對象。

引用代表地址,所以“==”實際上相當于比較兩個引用類型變量中保存的對象地址是否相同。

3

.以下代碼為何無法通過編譯?哪兒出錯了?

public class test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Foo obj1=new Foo();

}

}

class Foo{

int value;

public Foo(int intvalue){

value=intvalue;

}

}

結論:

如果類提供了一個自定義的構造方法,將導致系統不再提供默認構造方法。

4.運行代碼

public class test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

InitializeBlockClass obj=new InitializeBlockClass();

System.out.println(obj.field);//?

obj=new InitializeBlockClass(300);

System.out.println(obj.field);

}

}

class InitializeBlockClass{

{field=200;}

public int field=100;

public InitializeBlockClass(int value){this.field=value;}

public InitializeBlockClass(){}

}

結論:

執行類成員定義時指定的默認值或類的初始化塊,到底執行哪一個要看哪一個“排在前面”。 執行類的構造函數。

類的初始化塊不接收任何的參數,而且只要一創建類的對象,它們就會被執行。因此,適合于封裝那些“對象創建時必須執行的代碼”。

5.運行代碼

class Root

{

static{

System.out.println("Root的靜態初始化塊");

}

{

System.out.println("Root的普通初始化塊");

}

public Root()

{

System.out.println("Root的無參數的構造器");

}

}

class Mid extends Root

{

static{

System.out.println("Mid的靜態初始化塊");

}

{

System.out.println("Mid的普通初始化塊");

}

public Mid()

{

System.out.println("Mid的無參數的構造器");

}

public Mid(String msg)

{

//通過this調用同一類中重載的構造器

this();

System.out.println("Mid的帶參數構造器,其參數值:" + msg);

}

}

class Leaf extends Mid

{

static{

System.out.println("Leaf的靜態初始化塊");

}

{

System.out.println("Leaf的普通初始化塊");

}

public Leaf()

{

//通過super調用父類中有一個字符串參數的構造器

super("Java初始化順序演示");

System.out.println("執行Leaf的構造器");

}

}

public class TestStaticInitializeBlock

{

public static void main(String[] args)

{

new Leaf();

}

}

結論:

靜態初始化塊只執行一次。 創建子類型的對象時,也會導致父類型的靜態初始化塊的執行。

6.上述神奇代碼(StrangeIntegerBehavior.java)輸出詭異的結果,原因何在?

結論:因為它們調用的Interger類的方法不同,所以結果不同

7.靜態方法中只允許訪問靜態數據,那么,如何在靜態方法中訪問類的實例成員(即沒有附加static關鍵字的字段或方法)?

class?Example

{

public?static?void?display()

{

System.out.println("類的方法");

}

public?void?displayOne()

{

System.out.println("對象的方法");

}

public?static?void?main(String[]?args)

{

Example.display();

Example?e=new?Example();

e.displayOne();

e.display();

}

}

總結

以上是生活随笔為你收集整理的java 类及对象的课后作业_JAVA类和对象课后作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。