Javaオブジェクト向け基礎知識学習ノート整理


Javaオブジェクトの基礎知識の整理、クラス、オブジェクトの定義と作成、ローカル変数とメンバー変数の違いと構造方法、thisキーワードの使い方を含む
文書ディレクトリ
  • 概要:
  • クラスおよびオブジェクト
  • クラスの定義
  • オブジェクトの作成
  • オブジェクトをメソッドとするパラメータ
  • オブジェクトのメソッドとしての戻り値
  • ローカル変数およびメンバー変数
  • パッケージ性
  • thisキーワード
  • 構造方法
  • 定義標準クラス
  • 概要:
    プロセスに向かう:1つの機能を実現する必要がある時、すべての具体的なステップはすべて親身になって、すべての細部を詳しく処理して対象に向かう:1つの機能を実現する必要がある時、具体的なステップに関心を持たないで、すでにこの機能を持っている人を探して、私の仕事を手伝ってくれます.
    プロセス思想に向かう
    自分が望む機能を自分で実現する
    
    public class test {
        // main
        public static void main(String[] args) {
            //         arrayA
            int[] arrayA = new int[] {1, 2, 3, 4, 6};
    
            System.out.print("[");
            for (int i = 0; i < arrayA.length; i++) {
                if (i == arrayA.length - 1) {
                    System.out.print(arrayA[i] + "]");
                }else {
                    System.out.print(arrayA[i] + ", ");
                }
            }
        }
    }
    

    出力:
    [1, 2, 3, 4, 6]
    

    対象思想
    JDKを使って良いArraysクラスの中のtoString方法を提供して、直接配列を印刷することができます
    
    import java.util.Arrays;
    
    public class test {
    
        // main
        public static void main(String[] args) {
            //         arrayA
            int[] arrayA = new int[] {1, 2, 3, 4, 6};
            System.out.println(Arrays.toString(arrayA));
        }
    }
    

    出力:
    
    [1, 2, 3, 4, 6]
    

    特徴:対象に向かうのは私たちの思考習慣にもっと合った思想で、それは複雑なことを簡単化することができて、そして私たちを実行者から指揮者に変えて、独り占めする言語の中で、3つの基本的な特徴を含んで、パッケージして、継承して多態です.
    クラスとオブジェクト
    クラス:関連する属性と行為の集合であり、物事のテンプレートと見なすことができ、物事の属性特徴と行為特徴を使用してその物事のオブジェクトを記述する:物事の具体的な体現であり、オブジェクトはクラスの一例である.
    クラスの定義
    メンバー変数(プロパティ)
    注意:一般的な書き方では、public static void function() {}を使用してメソッドを定義しますが、メンバーメソッドではpublic void function() {}を使用して定義します.
    
    //        
    public class Student {
    
        //     
        String name;
        int age;
    
        //     
        public void study() {
            System.out.println("  !");
        }
    
        public void sleep() {
            System.out.println("  !");
        }
    }
    

    オブジェクトの作成
    クラスが定義されている場合は直接使用できません.クラスに基づいてオブジェクトを作成する必要があります.
    1、パッケージのインポート
    import    .   
      : import java.util.Arrays;
    (                 ,        )
    

    2、フォーマットの作成
            = new    ();
      : Student stu = new Student();
    

    3、使用
          :   .     
          :   .     (  )
    

    例を挙げる
    
    //      
    public class Student {
        //     
        String name;
        int age;
    
        //     
        public void study() {
            System.out.println("  !");
        }
    
        public void sleep() {
            System.out.println("  !");
        }
    }
    
    
    public class test {
    
        public static void main(String[] args) {
    
            //     
            Student stu = new Student();
    
            //       
            System.out.println("   :" + stu.name);
            System.out.println("   :" + stu.age);
    
            //        
            stu.name = "ilblogs";
            stu.age = 24;
            //         
            System.out.println("   :" + stu.name);
            System.out.println("   :" + stu.age);
    
            //       
            stu.sleep();
            stu.study();
        }   
    }
    
    

    メソッドのパラメータとしてオブジェクト
    オブジェクトをパラメータとしてメソッドに渡すと,実際に渡されるのはオブジェクトのアドレス値である.
    
    //      
    public class Student {
        //     
        String name;
        int age;
    
        //     
        public void study() {
            System.out.println("  !");
        }
    
        public void sleep() {
            System.out.println("  !");
        }
    }
    
    
    public class test {
        public static void main(String[] args) {
    
            //     
            Student stu = new Student();
            stu.name = "charlin";
            stu.age = 33;
            printInfo(stu);
        }
    
        //       ,       
        public static void printInfo(Student student1) {
            System.out.println("   :" + student1.name);
            System.out.println("   :" + student1.age);
        }
    }
    

    メソッドとしてのオブジェクトの戻り値
    
    //      
    public class Student {
        //     
        String name;
        int age;
    
        //     
        public void study() {
            System.out.println("  !");
        }
    
        public void sleep() {
            System.out.println("  !");
        }
    }
    
    public class test {
        public static void main(String[] args) {
    
            //     
            Student stu = getStudent();
            System.out.println(stu.name);
            System.out.println(stu.age);
        }
    
        //       
        public static Student getStudent() {
            Student stu = new Student();
            stu.name = "Tom";
            stu.age = 15;
            return stu;
        }
    }
    
    

    ローカル変数とメンバー変数
    区别:1、定义の位置が异なる局部変数:メソッドの内部に陈冠変数:メソッドの外部で、直接クラスに书く2、作用范囲が异なる局部変数:メソッドの中でしか使用できない、メソッドを出した后でメンバー変数を使うことができない:クラス全体がすべて通用する3、デフォルト値が异なる局部変数:デフォルト値がなく、デフォルト値を使用するには、メンバー変数を手動で割り当てる必要があります.デフォルト値が割り当てられていない場合は、デフォルト値があります.ルールは配列と同じです.4、メモリの位置が異なります.ローカル変数:スタックにあるメモリメンバー変数:スタックにあるメモリ5、ライフサイクルが異なるローカル変数:メソッドがスタックに入るにつれて誕生します.メソッドがスタックを出るにつれてメンバー変数が破棄されます.オブジェクトが作成されるにつれて誕生し、オブジェクトがゴミ回収されるにつれて消失します.
    パッヶージせい
    パッケージ:いくつかの詳細な実装を隠して、構造をより明確に見せることです.
    1、方法は一種のパッケージである
    
    public class test {
        public static void main(String[] args) {
            int[] arrayA = {5, 14, 19, 32, 66};
            System.out.println("    :" + getMax(arrayA));
        }
    
        //      
        public static int getMax(int[] array) {
            int max = array[0];
            for (int i = 1; i < array.length; i++) {
                if (max <= array[i]) {
                    max = array[i];
                }
            }
            return max;
        }
    }
    

    2、キーワードprivateも一種のパッケージである
    メンバー変数を定義する場合、不合理な数値が設定されるのを阻止することはできません.では、privateでメンバー変数を修飾し、privateで修飾したメンバー変数を使用して、本クラスでは任意にアクセスできますが、本クラスの範囲を超えた場合は直接アクセスできません.
    
    //    Person  
    public class Person {
        //     
        String name;
        int age;
    
        public void show() {
            System.out.println("  :" + name + ",   :" + age);
        }
    }
    
    public class test {
        public static void main(String[] args) {
    
            Person man = new Person();
            man.name = "Alex";
            man.age = 26;
            man.show();
        }
    }
    

    出力:
    
      :Alex,   :26
    

    ただしprivateでメンバー変数を修飾すると、他のクラスではそのメンバー変数へのアクセス制御の権限しかなく、変更の権限がないため、メンバー変数の設定を次の方法で行い、メンバー変数に間接的にアクセスできます.
    
    //    Person  
    public class Person {
        //     
        String name;
        private int age;
    
        public void show() {
            System.out.println("  :" + name + ",   :" + age);
        }
    
        //    private        
        public void setAge(int num) {
            age = num;
        }
    
        //    private         
        public int getAge() {
            return age;
        }
    }
    
    public class test {
        public static void main(String[] args) {
    
            Person man = new Person();
            man.name = "Alex";
            // man.age = 26;    //     
            man.setAge(52);     //     
            man.show();
        }
    }
    

    しかし、上記の書き方はかえって肥大化していて、役に立たないように見えますが、実際の書き方ではprivateを書く目的はデータの検査です.たとえば、上記のコードでは、年齢を設定し、年齢が負であれば、私たちが望んでいるデータではありません.
    間接アクセスとは、メンバー変数が存在する内部でSetterメソッドとGetterメソッドを定義するSetterです.戻り値は使用できません.パラメータタイプとメンバー変数はGetterです.パラメータは使用できません.戻り値タイプとメンバー変数は使用できません.(注意:privateで修飾されたブール型のメンバー変数については、Getterメソッドを定義するときにisxxx形式で書くべきです)
    次のようになります.
    
    public class Person {
        //     
        String name;
        private int age;
        private boolean male;
    
        public void show() {
            System.out.println("  :" + name + ",   :" + age);
        }
    
        public void setMale(boolean attr) {
            male = attr;
        }
    
        public void isMale() {
            return male;
        }
    
        //    private        
        public void setAge(int num) {
            if (num < 100 && num >=9) {
                age = num;
            }else {
                System.out.println("     !");
                age = 0;
            }
        }
    
        //    private         
        public int getAge() {
            return age;
        }
    }
    
    public class test {
        public static void main(String[] args) {
    
            Person man = new Person();
            man.name = "Alex";
            // man.age = 26;    //     
            man.setAge(-1);
            man.show();
        }
    }
    

    出力:
         !
      :Alex,   :0
    

    このキーワード
    メソッドのローカル変数とクラスのメンバー変数が重複する場合、「近接原則」に従ってローカル変数を優先的に使用し、本クラスのメンバー変数にアクセスするにはフォーマットthis. を使用する必要があります.
    誰が呼び出すかによって、誰がthisです.
    
    public class Person {
        String name;
    
        public void sayHello(String who) {
            System.out.println(who + ",  ,   " + name);
        }
    }
    
    public class test {
        public static void main(String[] args) {
    
            Person man = new Person();
            man.name = "A";
            man.sayHello("B");
        }
    }
    

    出力:
    B,  ,   A
    

    しかし、PersonクラスのsayHello(String who)がsayHello(String name)に変更されると、パラメータのnameとメンバー変数nameが一致し、近接原則に従って出力される自然が局所変数のname。であれば、メンバー変数のthis.nameの代わりにnameを使用することができる(mainメソッドは上記と一致する)
    
    public class Person {
        String name;
    
        public void sayHello(String name) {
            System.out.println(name + ",  ,   " + this.name);
        }
    }
    

    出力:
    B,  ,   A
    

    構築方法
    コンストラクションメソッドは、キーワードnewでオブジェクトを作成するときに、コンストラクションメソッドを呼び出すオブジェクトを作成するためのメソッドです.
    書式:
    public    (         ) {
           ;
    }
    

    注意事項:1、構築方法の名前は、存在するクラス名と完全に同じでなければならない.大文字と小文字が一致している2、構築方法は戻り値タイプを書かないでください.voidも3ではありません.構築方法は具体的な戻り値4をreturnできません.構築方法が書かれていない場合、コンパイラはデフォルトで構築方法を作成します.ただし、メソッド体が空の5であれば、少なくとも1つのつのコンストラクションメソッドを使用すると、コンパイラのデフォルトのコンストラクションメソッドが上書きされます6、コンストラクションメソッドもリロードできます
    
    public class Student {
        //       
        private String name;
        private int age;
    
        //         
        public Student() {
            System.out.println("        !");
        }
    
        //         
        public Student(String name, int age) {
            System.out.println("        !");
            this.name = name;
            this.age = age;
        }
    
    
        // Getter   Setter
        public void setName(String name) {
            this.name = name;
        }
    
        public String getName() {
            return this.name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public int getAge() {
            return this.age;
        }
    }
    
    public class test {
        public static void main(String[] args) {
    
            Student stu1 = new Student();
            System.out.println("  :" + stu1.getName() + ",  :" + stu1.getAge());
    
            Student stu2 = new Student("Alex", 23);
            System.out.println("  :" + stu2.getName() + ",  :" + stu2.getAge());
        }
    }
    

    出力:
    
            !
      :null,  :0
            !
      :Alex,  :23
    

    標準クラスの定義
    4つの部分の構成:1、すべてのメンバー変数はprivateキーワードで修飾する2、各メンバー変数に対して1対のGetter、Setterメソッド3、1つの5パラメータを記述する構造方法4、1つの全パラメータを記述する構造方法
    標準クラスはJava Beanとも呼ばれます
    以上、Java対象の基礎知識についてノートを整理しました.