標籤: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
在主函數中調用時,先調用最小輩分的類的第一個函數,然後依次往後調用中間輩分第一個,最大輩分的一個,之後直接調用最小輩分剩餘的函數,中間輩分剩餘函數,最大輩分剩餘函數。
類與對象的問題