類與對象的問題

來源:互聯網
上載者:User

標籤:object   tst   string   equal   如何   als   沒有   定義   out   

1、

早期經常這樣定義變數 int value=100;

前面的樣本中這樣定義變數 MyClass obj = new MyClass();

第一種僅僅定義了一個變數並為它賦了一個值。而第二種是定義了一個類的對象,通過這個對象可以調用該類中的所有內容。

2、

package jiecheng;

public class Test {
public static void main(String[] args)
{
Foo obj1=new Foo();
Foo obj2=new Foo();
System.out.println(obj1==obj2);
}
}
class Foo
{
int value=100;
}

運行該代碼結果為false,我們肯定認為結果為true, 

當“==”施加於未經處理資料類型變數時,是比較變數所儲存的資料是否相等 當“==”施加於參考型別變數時,是比較這兩個變數是否引用同一對象。 引用代表地址,所以“==”實際上相當於比較兩個參考型別變數中儲存的對象地址是否相同。

3、如何比較兩個對象的“內容”是否一樣?    

Demo: ObjectEquals.java

很明顯 ==的為false,equals為true。

4、Equals( )方法從哪來?

當你定義一個類的時候,

如果不顯式指明它的“父親”類是哪個,則預設是Object。

Object是Java的最頂層基類,其中定義了equals( )方法。

5、class MyTestClass

{

public MyTestClass(int initValue)

{

Value=initValue;

}

}

該函數名與類名相同,為建構函式。

6、

public class TESTcc {
public static void main(String[] args)
{
Foo obj=new Foo();
}
}
class Foo
{
int value;
public Foo(int initValue)
{
value=initValue;
}
}

該代碼無法編譯的原因是,Foo類中只有一個建構函式,如果光定義Foo的對象obj,是無法編譯的,如果改成Foo obj=new Foo(0)的話,就沒有問題了,這是調用了類中的建構函式。

7、編譯InitializeBlockDemo。

結果為100  300.

在主函數中調用時,還是主要調用剛定義的時候的值。

8、TestStaticInitializeBlock.java

在主函數中調用時,先調用最小輩分的類的第一個函數,然後依次往後調用中間輩分第一個,最大輩分的一個,之後直接調用最小輩分剩餘的函數,中間輩分剩餘函數,最大輩分剩餘函數。

 

類與對象的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.