A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© CRT 中级黑马   /  2016-9-5 23:46  /  433 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、封装相关的问题
        1、构造方法
                构造方法的作用:给数据(成员变量)进行初始化值。
                构造方法的特点:
                        1、没有具体的返回值类型,连void也没有
                        2、和该实体类名相同
                        3、没有具体的返回值,return;
                        4、该类创建对象,不能用该类的引用去直接调用构造方法
                Student s = new Student();

                class Student{
                        private String name;
                        private int age;
                        public Student(){
                                name = "张三";
                                age = 23;
                                //return;
                        }
                }


        2、构造方法重载的问题
                1、构造方法的重载
                        A:方法名相同(构造方法的方法名和类名一致)
                        B:和返回值无关,只和参数列表有关

                2、构造方法的注意事项
                        A:如果你没有给出有参构造和无参构造,那么系统会自动给出一个无参构造
                        B:如果你创建类有参构造,而没有指定无参构造,系统不会再给出无参构造。
                        建议:当我们去创建构造方法的时候,要给出无参构造

                3、
                        class Student{
                                private String name = "张三";
                                private int age = 23;

                                public Student(){

                                }

                                public Student(String name,int age){
                                        this.name = name;
                                        this.age = age;
                                }
                        }

                4.构造方法和SetXxx方法赋值的两种区别
                        构造方法:用来初始化成员变量的
                        SetXxx:修改构造方法进行初始化的成员变量的值。

                        能用构造方法进行修改成员变量的值么?
                                不行。当我们去new对象的时候,其实是重写创建的一个新的对象。已经不是原来的那个对象了。
               
               
                5、创建对象产生的步骤

                        A:实体类的字节码文件(Student.class),进方法区。
                        B:创建该类的一个引用
                        C:在堆的内存中开辟一个该实体类的空间,创建该实体类的对象
                        D:对该实体类进行一个默认初始化值
                        E:如果有显示初始化,做显示初始化(在成员变量进行直接赋值)
                        F:构造方法进栈,对成员变量,显示初始化(重新赋值)。
                        G:把地址值赋值给该类的应用

                6、static 关键字
                        作用:是共享数据(变量,方法)。
                        当字节码文件加载到方法区中,分为两部分:静态区和非静态区。
                        静态区存储的都是带static,非静态区存储的都是不带static。

                7、static 关键字的特点

                        1、可以被共享
                        2、随着类的加载而加载
                        3、优先于对象存在
                        4、可以通过类名.调用。也可以通过对象名.调用。但是如果是静态一般都用类名.调用。

                8、static的注意事项

                        * a:在静态方法中是没有this关键字的
                                * 如何理解呢?
                                        * 静态是随着类的加载而加载,this是随着对象的创建而存在。
                                        * 静态比对象先存在。

                        * b:静态方法只能访问静态的成员变量和静态的成员方法
                                * 静态方法:
                                        * 成员变量:只能访问静态变量
                                        * 成员方法:只能访问静态成员方法
                                * 非静态方法:
                                        * 成员变量:可以是静态的,也可以是非静态的
                                        * 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。

                9、静态变量和成员变量的区别

                        A:所属位置
                                静态变量:类的
                                成员变量:对象

                        B:内存位置不同
                                静态变量:方法区中静态区
                                成员变量:堆内存中

                        C:生命周期不同
                                静态变量:随着类的加载而加载,随着类的消失而消失
                                成员变量:随着对象的创建而产生,随着对象的消失而消失
                       
                        D:调用不同
                                静态变量:类名.调用
                                成员变量:对象名.调用

                10、工具类
                        1、如果让我们自己去写工具类,我们该工具类中的所有方法都是静态的。
                        2、如果一个类中的所有的方法都是静态,那么我们要去私有构造方法。
                                为什么要去私有构造方法?
                                防止其他类创建该工具类对象。

                11、Math类
                        1、如何获取1-100之间的随机数
                                (int)(Math.random() * 100) + 1  //0.0 - 1.0    //random()它是Math类中的一个方法,使用获取随机数

                        2、以后如果学到获取范围的,一般都是:包头不包尾

               





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马