JAva基礎知識整理(javaプログラミング思想1-6章)


//注釈:今はもうすぐ大学4年生になるので、今までプログラミングを勉強しても間もなく、教室で独学して、知識点は本当に断片化しています.それに実际のプロジェクトの経験がないので、今自分が何を学んだのか分かりません.そこで学んだ知識の破片を整理し始め、メモとしても使い、自分で調べるのに便利になった.最近『javaプログラミング思想』を読んで強固になって、これから、自分が学んだ知識を徐々に整理していきます.主な記録は忘れるか//より重要かもしれません.忘れないように
『javaプログラミング思想』第二章:すべてが対象
main()メソッドのパラメータはStringオブジェクトの配列です.このプログラムではargsは使用されませんが、javaコンパイラは、argsがコマンドラインパラメータを格納するために使用されるため、このようにする必要があります.
『javaプログラミング思想』第三章:オペレータ
≪1元加算-減算オペレータ|One Add-減算オペレータ|oraolap≫:データを変換するシンボルに1元減算記号が使用され、1元加算知識は1元減算記号に対応します.しかし、唯一の役割は、小さなタイプと呼ばれる操作数をintに上げることだけです.
//: operators/Equivalence.java

public class Equivalence {
  public static void main(String[] args) {
    Integer n1 = new Integer(47);
    Integer n2 = new Integer(47);
    System.out.println(n1 == n2);   //         ,     
    System.out.println(n1 != n2);
  }
} /* Output:
false   //n1,n2         ,   
true
*///:~

注意:equals()のデフォルトの動作は参照であるため、自分の新しいクラスでequals()メソッドを上書きしない限り、私たちが望む動作を示すことはできません.
ほとんどのjavaクラスライブラリでは、比較オブジェクトの参照ではなく、オブジェクトの内容を比較するためにequals()メソッドが実装されています.
ショート:論理オペレータを使用すると、ショート現象に遭遇します.すなわち,式全体の値を誤りなく決定できると,式の残りの部分は計算されなくなる.
JAvaでは、任意の基本データ型を別の基本データ型に変換できますが、ブール型を除いて、後者は任意のタイプの変換処理を許可しません.(C++とは違います)
floatingまたはdoubleを整数値に変換すると、その数値は常に終了します.丸めた結果を得るにはjavaを使用する必要がある.lang.Mathのround()メソッド.
基本データ型に対して算術演算またはビット演算を実行し、タイプがintより小さい(すなわちchar,byte,short)限り、演算前にこれらの値が自動的にintに変換され、演算の結果も当然intである.
『javaプログラミング思想』第四章:実行プロセスの制御
switchは使用する選択因子を要求し、intまたはcharのような整数値でなければならない.たとえば、文字列または浮動小数点数を選択因子として使用すると、switch文では動作しません.
  
switch(x)
{
      case:
     case
}

ここでxはintやcharのような整数値でなければならない.
『javaプログラミング思想』第五章:初期化と整理
Javaでは、初期化と作成が結合されており、両者は分離できません.
メソッドのリロードでは,パラメータ順序の違いさえも2つのメソッドを区別するのに十分である.(もちろん、なるべくそうしないで、読みにくい)
基本タイプに関するリロード
入力されたデータ型(実際のパラメータ型)がメソッドで宣言された形式パラメータ型より小さい場合、実際のデータ型は昇格されます.char型はやや異なり、charパラメータを受信する方法が見つからない場合は、charをint型に直接昇格させます.
staticメソッドの内部では、非静的メソッドを呼び出すことはできません.
JAvaごみ回収メカニズムにおけるメソッドfinalize()メソッド、動作原理:ごみ回収器がオブジェクト占有の記憶領域を解放する準備ができたら、まずfinalize()メソッドを呼び出し、次のごみ回収動作が発生したときに、オブジェクト占有の内蔵を本当に回収します.だからfinalizeを使用するつもりなら()は、ごみの回収時に重要な掃除をすることができます.
Java仮想マシン(JVM)がメモリの消費量に直面していない場合は、ゴミ回収を実行してメモリを復元する時間を無駄にしません.
作業中は、スタック内のオブジェクトをコンパクトに配置する一方で、スペースを回収します.
オブジェクトを再配置することにより,高速で無限の空間を持つスタックモデルを実現した.
JAvaは、すべての変数が使用前に適切に初期化されることを保証します.
初期化の自動化を阻止できません.
クラスの内部では,変数定義の前後順序が初期化の順序を決定する.変数定義がメソッド定義間に分散しても、コンストラクタを含む任意のメソッドが呼び出される前に初期化されます.
staticキーワードはローカル変数には作用しないため、ドメインにのみ作用します.
静的初期化の表示
静的句(静的ブロック):(staticキーワードの後ろのカッコ内のコード)
//: initialization/Spoon.java
public class Spoon {
  static int i;
  static {
    i = 47;   //     
  }
} ///:~

他の静的初期化動作と同様に、このコードは1回のみ実行されます.このクラスのオブジェクトが初めて生成された場合、またはそのクラスに属する静的データメンバーに初めてアクセスした場合(そのクラスのオブジェクトが生成されたことがなくても).
非静的サンプルの初期化
クラスでは、カッコで囲まれたコードのみが使用されます.静的コードブロックに比べてstaticキーワードが少なくなります.
この構文は、匿名の内部クラスの初期化をサポートするために必要です.コンストラクタの前に実行
可変パラメータリスト
//: initialization/NewVarArgs.java
// Using array syntax to create variable argument lists.

public class NewVarArgs {
  static void printArray(Object... args)  //         ,    Object     args,                  
{
    for(Object obj : args)
      System.out.print(obj + " ");
    System.out.println();
  }
  public static void main(String[] args) {
    // Can take individual elements:
    printArray(new Integer(47), new Float(3.14),
      new Double(11.11));
    printArray(47, 3.14F, 11.11);
    printArray("one", "two", "three");
    printArray(new A(), new A(), new A());
    // Or an array:
    printArray((Object[])new Integer[]{ 1, 2, 3, 4 });
    printArray(); // Empty list is OK
  }
} /* Output: (75% match)
47 3.14 11.11
47 3.14 11.11
one two three
A@1bab50a A@c3c749 A@150bd4d
1 2 3 4
*///:~

『javaプログラミング思想』第六章:アクセス権限制御
1.protectedはまた、同じパッケージ内の他のクラスがprotected要素にアクセスできるようにするパケットアクセス権限を提供する.同じクラスではpublicに相当します.
2.各コンパイルユニット(ファイル)にはpublicクラスが1つしかありません(このクラスの名前はファイル名と同じです).もちろんpublicのクラスも1つもありませんが、クラスの命名には規定がありません.
3.最良の設計はファイルとpublicクラスです.
4.コンストラクタは、アクセスタイプを指定することもできます.privateの場合、クラスのオブジェクトを作成するために誰かまたはクラスを組織できます.