JavaDay 10:オブジェクト向け:staticスタティック、コードブロック、equalキーワード、cloneクローン

6843 ワード

static静的、コードブロック、equalキーワード、cloneクローン
  • static静的
  • コードブロック
  • equalsキーワード
  • cloneクローン
  • static静的
    staticキーワードの使用
  • 静的コンテンツは共有され、すべてのクラスが共有される.
  • 静的コンテンツはクラスロード時に初期化され、オブジェクトより先に作成される.したがって、静的は非静的コンテンツを呼び出すことができず、非静的コンテンツは静的コンテンツを呼び出すことができる.
  • 静的呼び出し:1.オブジェクト名属性(メソッド)2.クラス名.属性(メソッド)推奨2.静的コンテンツの呼び出しのみが直接クラス名で呼び出すことができるため、静的コンテンツであることがわかる.
  • コードブロック
    一対の{}で囲まれたコード.分類:一時コードブロック、メンバーコードブロック、静的コードブロック
    static{
    	System.out.println("1---Person      ");
    }
    	
    {
    	System.out.println("2---Person      ");
    }
    	
    public void eat(){
    	{
    		System.out.println("hello");
    	}//      
    	System.out.println("     。。。。。");
    }
    
  • 静的符号ブロックの内容は一度だけ実行する、クラスロード時にPerson p =new Person() Person pを実行するときに静的符号ブロックの内容を実行し、new Person()後にメンバメソッドを実行し、さらに構造方法
  • を実行する.
  • メンバーコードブロックの実行順序は、構築方法の前に
  • である.
  • 優先順位は(まず1から判断):1.静的>非静的2.親>子3.コードブロック>構築方法
  • である.
  • 親クラスと子クラスの静的コードブロック、メンバーコードブロック、構築方法の実行順序:親クラスがPerson、子クラスがStudentの場合1:Student s1 = new Student();.親静的コードブロック->2.サブクラス静的コードブロック->3.親メンバーコードブロック->4.親の構築方法->5.サブクラスメンバーコードブロック->6.サブクラス構造方法の場合2:Student s1 = new Student(); Student s2 = new Student();の順序は1である.親静的コードブロック->2.サブクラス静的コードブロック->3.親メンバーコードブロック->4.親の構築方法->5.サブクラスメンバーコードブロック->6.サブクラスの構築方法->7.親メンバーコードブロック->8.親の構築方法->9.サブクラスメンバーコードブロック->10.サブクラス構築方法equalsキーワード
  • equals:2つのオブジェクトが「等しい」かどうかを比較します.参照データ型にのみ使用できます.基本データ型には使用できません.=:比較オブジェクトが基本データ型の場合の比較の時間値、比較オブジェクトが参照データ型の場合の比較のアドレス.
  • equalsメソッドObjectを万クラスの祖先として書き換え、親オブジェクトのequalsメソッド
  • を書き換えることができます.
    public boolean equals(Object obj) {
           return (this == obj);
       }//Object  equals  
    

    書き換えショートカット:右クリック->Source->Generate hashCode()and equals()
    クローン
    オブジェクトを作成するには、new、clone、反射、逆シーケンス化クローンステップの4つの方法があります.
  • クラス実装Cloneableインタフェース
  • cloneメソッド(デフォルトはprotected)をpublicに書き換え、アクセス役割ドメイン
  • を拡大する.
    public class Person implements Cloneable{//1.    
    	
        public String name  ;
    	public String sex ;
    	public int age ;
    	
    	@Override//2.  clone()
    	public Object clone() throws CloneNotSupportedException {
    		return super.clone();
    	}
    
    }
    
  • clone()はデフォルトでObjectタイプのオブジェクトを返します.このメソッドを呼び出すと、返されたオブジェクトを強く回転します.
    Person p = new Person();
    p.name = "seven";
    p.age = 18 ;
    p.sex = " ";//   ,     
    		
    Person p2 = (Person) p.clone() ;