システムの基本的な部分、オブジェクト、カレンダー、StringBufferの

System.out.println(OBJ)とのSystem.out.println(obj.toString())の違い

パブリック 静的 ボイドメイン(文字列[]引数){ 
        オブジェクトO = 新しいオブジェクト(); 
        System.out.println(O); // java.lang.Object@1540e19d 
        するSystem.out.println(o.toString()); // java.lang.Object@1540e19d 
    }

両方の結果はまったく同じ分析です:Systemクラス

   静的変数のシステムのうち

システム:
公共の最終静的のPrintStreamアウト= NULL;

公共
ボイドのprintln(オブジェクトX){ 文字列S = String.valueOf(X) 同期){ プリント(S); 改行(); } }

文字列:
公共の静的な文字列のvalueOf(オブジェクトobj){ 
リターン(OBJ == nullの)?"ヌル":obj.toString();
}
 

実際には内部のprintln方法は、のtoString()オブジェクトのメソッドなので、本質的に同じ効果内外ストリングのvalueOf()メソッドのvalueOf()を呼び出し

Objectクラスのアクションは、()メソッドに等しいです

パブリック 静的 ボイドメイン(文字列[]引数){ 
        オブジェクトO1 = 新しいオブジェクト(); 
        オブジェクトO2 = 新しいオブジェクト(); 
        System.out.println(O1 == O 2)。//  
        のSystem.out.println(o1.equals(O2)); //  
    }

オブジェクトクラスは、メソッドに等しく、違いは==ない、オブジェクトのメモリアドレス空間に対応している複数の参照値は、所望の効果を達成するために、オブジェクトを上書きすることができ、そのサブクラスのequalsメソッドの真の意味で実用的な意義は、存在しません

、例えば:

パブリッククラスTESTONE { 
パブリック静的無効メイン(文字列[] args){
人物P1 =新しい人物( "liuyan"、 '女')。
人物P2 =新しい人( "yangmi"、 '女');
人物P3 =新しい人( "成龙"、 '男');
System.out.println(p1.equals(P2)); //真
のSystem.out.println(P1、P2 ==); // falseを
するSystem.out.println(p1.equals(P3)); //偽
}
}
クラスPerson {
プライベート文字列名;
プライベートchar型性別;
公共人(文字列名、文字性別){
this.name =名。
this.genderは性別を=。





IF(この== O)trueに復帰;
IF(!(instanceofは人O))はfalseを返します。
人人=(人)O;
IF(性別= person.gender!){
falseに復帰;
}他{
trueに復帰;
}
}

}
複数のオブジェクト、確かに異なるアドレス値がある場合であるが、限り同じ属性値として、equalsメソッドと比較した後、同じ書き換えなければならない実用的な意義。

カレンダーカレンダーを使用します

 パブリック 静的 ボイド主が(文字列[]引数){
         / ** 
         *カレンダーは抽象クラスであり、インスタンスが作成できません
         * Calendar.getInstance()サブクラスカレンダーオブジェクトを取得している
         *このメソッドは、ローカル情報(時間帯/言語)に基づくことができますカレンダーの適切なバージョン取得するために
         、日本では、日本のカレンダーを獲得した場合*はJapaneseImperialCalendarである
         中国では、GregorianCalendarを、一般に「グレゴリオ」として知られているグレゴリオ暦を取得する場合* 
         * / 
        カレンダーCA ; = Calendar.getInstanceを()// 2019- 8月16日 
        のSystem.out.println( "CA =" + CA);
         // 変換する月バック2ヶ月 
        ca.add(Calendar.MARCH、2 );
         int型の年= ca.get(Calendar.YEAR)。
         // 外国人の時間は、追加する必要がある(0-11)である1
        int型の月= ca.get(Calendar.MARCH)+ 1 ;
        int型日= ca.get(Calendar.DAY_OF_MONTH)。
        System.out.println(年 + " - " +月+ " - " +日)。// 2019年10月16日 
    }

 グレゴリオ暦では、月は0〜11から順番に中国1-12が対応しているので、1をカットする際に、1月に設定し、1ヶ月の追加には時間がかかりますが、集合場合との両方を使用して取得、あなたは必要ありませんプラス1およびマイナス1

例えば:

 
 
カレンダーCA2 = Calendar.getInstance(); // 2019年8月25日
ca2.set(Calendar.MARCH、4-1);
System.out.println(ca2.get(Calendar.MARCH)+1)。
System.out.println(新しいてSimpleDateFormat( "YYYY-MM-DD")フォーマット(ca2.getTime()));
カレンダーCA3 = Calendar.getInstance(); // 2019年8月25日
ca3.set(Calendar.MARCH、4)。
System.out.println(ca3.get(Calendar.MARCH))。
System.out.println(新しいてSimpleDateFormat( "YYYY-MM-DD")フォーマット(ca3.getTime()));

//结果

4
2019年4月25日
4
2019年5月25日

 

 

Systemクラスの配列複製法のarraycopy

公共の静的な無効のarraycopy(オブジェクトSRC、int型srcPos、オブジェクトdestが、destPos、int型の長さをint型):別の配列への配列内の指定されたデータをコピーします。

    プライベート 静的 ボイドのarraycopy(){
         / ** 
         標的配列の*値は、別に対応して設けられ、配列境界例外引き起こすことができない
         * / 
        整数を[] ARR1の = {1,2 ,. 3 ,. 4 ,. 5。}; 
        整数[] ARR2は = 6,7、8,9 { }; 
        System.arraycopyの(ARR1、の 2、arr2,0,3 
        のSystem.out.println(のArrays.toString(ARR2です)); 
    }

StringBufferのと文字列の間の差

  • 不変のStringクラスのオブジェクトの内容は、そのたびに文字列スプライシングは、常にメモリ内の新しいオブジェクトを作成し、Stringクラスのような記述でAPI:文字列は、それらの値で一定でありますあなたが変更することはできません作成した後、
  • そして、ちょうどこのStringBufferのが最適化され、その内部には、アレイ内で直接新しいコンテンツを追加し、文字列の内容を格納するために使用される1つの配列、文字列のステッチを所有しています。StringBuilderのは、自動的に拡張の配列を維持しています。原則:(デフォルト16文字スペースの下に示すように、自動拡張より)
  • 2つの一般的な方法は、(追加)とのtoString

おすすめ

転載: www.cnblogs.com/chenglei0718/p/11361450.html