Javaプログラミング思想--第2章「すべてが対象」

1808 ワード

一、操作対象を引用する
引用を持っているからといって、必ずしもオブジェクトとの関連が必要ではない。
参照Stering sを作成します。sに値を割り当てていない場合(初期化されていません)、sにメッセージを送ります。運転中にエラーが発生します。
関数の呼び出しで理解できます。
    public List> combinationSum(int[] nums, int target) {
        List> list = new ArrayList<>();
        Arrays.sort(nums);
        backtrack(list, new ArrayList<>(), nums, target, 0);
        return list;
    }
    
    private void backtrack(List> list, List tmpList, int[] nums, int remain, int start) {
        ...
このコードの中で、バックトラックの関数としてのイメージは、参照を作成することです。本当に作成されたオブジェクトは、cobinationSum関数のBacktrock関数で呼び出されます。
ちなみに、String s=「abcd」です。Java言語の特性:文字列は引用符付きテキストで初期化できます。
二、オブジェクトの作成
私たちの関心の対象はどこにありますか?メモリはどうやって割り当てられますか?アルゴリズムを理解するためには,プログラムの理解が大いに役立つ。
1.レジスタ:一番早い記憶エリアで、CPU内部では、数が少なく、直接制御できません。
2.スタック:ユニバーサルRAMに位置しています。最大の特徴は、プログラムがスタック上のプロジェクトのライフサイクルを明確にして、メモリを割り当て、解放する必要があるため、柔軟性が制限されています。javaオブジェクトはそこに保存されていません。
3.ヒープ:すべてのJavaオブジェクトを保存し、new文を実行してから、動的にオブジェクトを作成すると、利点は柔軟で、デメリットはスタックに比べて、ストレージ割り当てと整理に時間がかかります。
4.定数保存:通常はプログラムコードの内部に直接保存されます。
特例:基本タイプ
明確に、newではなく、積み重ねの上で基本的なタイプを作成し、c+++と同じ方法を採用し、基本的な型の変数を直接的に値を格納し、スタックに置いて、効率を向上させることを目的とする。
基本タイプは以下の通りです。
bootlean、char、byte、shot、int、long、float、double、void
Javaの基本的なタイプの特徴は以下の通りです。
1)Javaは、各基本タイプの記憶空間のサイズを決定する。例えば、int 32 bitts、long 64 bittsなど、他の多くの言語のようにマシンハードウェアアーキテクチャのサイズに合わせて
変化して変化するので、Javaプログラムはさらに移植可能性があります。
2)すべての数値タイプにはプラスとマイナスがあります。符号なしの数値タイプを探す必要はありません。
3)包装器類を提供し、対応する基本タイプを表すために、ヒープの中に非基本的なオブジェクトを作成することができます。例えば、char c='x'、包装器類の書き方:Charcter c=new Charcter('x')です。   Java SE 5には自動包装機能が提供されています。Charcter c='x'
Java配列の特徴:
1)配列初期化を確保する【cにおいて、多くの人が赤字を食べたことがあり、滑稽である】
2)できない範囲を確保して訪問される