java学习笔记(三)----成员权限,构造函数,this用法
成員權限
????????
?????????????? 本類??? 同包類??? 非同包子類??? 非同包非子類
public?????? ? y????????y???????????? ? y??????????????????????? y
protected??? y??????? y?????????? ?? ?y
default?????? ?y??????? y
private????? ? y
在類中定義的變量,在創建對象時,會自動對類中的變量進行初使化,對如int類的會被初使化為0。
在方法中定義的變量,不會被初使化。
peason p1=new peason p1();
peason p2=p1;
p1=null;
此時p1為空,變為垃圾,peason對象還被p2所引用.
==和equals的區別:==用于比較兩個變量的值是否相等(用于基本數據類型,equals用于比兩個對象中的內容是否完全一樣)
對于String s1=new String("abc"); 和 String s2=new String("abc");這兩條語句,用if (s1==s2) , s1和s2是不等的,因為s1和s2是兩個對象,所以不等; 但String s3=s1;
用if (s1==s3),則結果是相等的,因為s1和s3指向堆中的同一個對象,他們在棧中的值是一樣的。
equals用于比較兩個對象中的內容是否相等,if (s1.equals(s2)) ,則結果相等
數組間的考備函數 System.arraycopy()
數組間的排序 arrays.sort()
數組的比較也可用equals()
?
--------------------------------
***********匿名對象
可以 new 類名().方法名(); new peason().shout();直接創建一個對象,調用方法.(匿名對象)
匿名對象的兩種情況:1.如果對一個對象只需要進行一次方法調用,那么就可以使用匿名對象。
2.將匿名對象作為實參傳遞給一個函數調用,比如程序中有一個getSomeOne函數,要接收一個Person類對象作為參數,函數定義如下;
public static void getSomeone(Person p)
{.......}
可以用下面的語句調用這個函數
getSomeOne(new Person());
?
----------------------------
*********構造函數
構造方法的特征:
1.它具有與類相同的名稱
2.它不含返回值
3.它不能在方法中用return語句返回一個值
注意:在構造方法里不含返回值的概念是不同于void的,在定義構造方法時加了void,結果這個方法就不再被自動調用了
在構造函數中,通過this可以調用同一class中別的構造函數,如
public class Flower{
Flower (int petals){}
Flower(String ss){}
Flower(int petals, Sting ss){
//petals++;調用另一個構造函數的語句必須在最起始的位置
this(petals);
//this(ss);會產生錯誤,因為在一個構造函數中只能調用一個構造函數
}
}
**:1)在構造調用另一個構造函數,調用動作必須置于最起始的位置
2)不能在構造函數以外的任何函數內調用構造函數
3)在一個構造函數內只能調用一個構造函數
?
------------------------------------------
this用法1
class Person ()
{? private int age;
?? private String name=new String();
?? public Person(){}
?? public Person( String x)????
?? {? name=x;}
?? public Person( String x,int y)
?? {? name=x;? age=y;}
?? public void fun1();
?? {? System.out.println(name) }
?? public void fun2();
?? {? Person a2=new Person("a2");
????? a2.fun1();
????? this.fun1();? // a1.fun1? this代表對fun2進行調用的對象,fun2運行時是一定有一個對象存在的,這里的this是可以省略的,直接用fun1()
??? }
?? //this就相當于我所在的那個對象
?? public static void main(String [] args)
?? { Person a1=new Person("a1");
???? a1.fun2();
?? }????
}
this用法2
?class Person ()
{? private int age;
?? private String name=new String();
?? public Person(){}
?? public Person( String x)?????
?? {? name=x;}
?? public Person( String x,int y)
?? {? name=x;? age=y;}
}
改為
? class Person ()
{? private int age;
?? private String name=new String();
?? public Person(){}
?? public Person( String name)?????
?? {? this.name=name;}
?? public Person( String name,int age)
?? {? this.name=name;? this.age=age;}
}
????
this用法3:用構造方法去調用另一個構造方法
?class Person ()
{? private int age;
?? private String name=new String();
?? public Person(){}
?? public Person( String name)?????
?? {? this.name=name;}
?? public Person( String name,int age)
?? {? this();?? // 調用Person()構造孔方法
????? this(name); //調用Person(String name)構造方法
????? this.age=age;}
}
---------------------------------------
finalize 析構方法,垃圾回收器? 用法 public void finalize(){...}
System.gc() 當在主函數中調用時,啟動地垃圾回收finalize(){...}
每個類中都有一個垃圾回收器
Classs A{
...
...
public void finalize()
{ System.out.println("object is going!"); }
public static void main(String[] args)
{ new A();
? new A();
? new A();
? System.gc(); //啟動垃圾回收
}
}
運行結果:object is going!
????????? object is going!
????????? object is going!
總結
以上是生活随笔為你收集整理的java学习笔记(三)----成员权限,构造函数,this用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学习笔记(二) ----基本数据
- 下一篇: java学习笔记(四)----对象、数组