javaSE第七天

第七天    36

1. 成员变量和局部变量的区别(理解)    36

(1)在类中的位置不同    36

(2)在内存中的位置不同    36

(3)生命周期不同    36

(4)初始化值不同    37

2. 形式参数的问题?(理解)    37

3. 匿名对象(理解)    37

4. 封装(理解)    37

5. private关键字(掌握)    37

6. this关键字(掌握)    38

7. 构造方法(掌握)    38

(1)作用:    38

(2)格式:    38

(3)构造方法的注意事项    38

(4)给成员变量赋值的方式    38

(5)标准案例    38

8. 成员方法的分类及使用    39

9. 代码:Student s = new Student();做了哪些事情?(理解)    41

10. 面向对象的练习题(掌握)    41

11. 关键字static 引入和应用    41

(1). static 的特点:(它可以修饰成员变量,还可以修饰成员方法)    41

(2). Static 关键字的内存图解    42

(3).static 的注意事项    42

12. 静态变量和成员变量的区别(理解)    42

13. main 方法的格式讲解    43

 

 

第七天

 

1. 成员变量和局部变量的区别(理解)
    (1)在类中的位置不同

        成员变量:类中方法外

        局部变量:方法定义中或者方法声明上

    (2)在内存中的位置不同

        成员变量:在堆内存中

        局部变量:在栈内存中

    (3)生命周期不同

        成员变量:随着对象的创建而存在,随着对象的消失而消失

        局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

    (4)初始化值不同

        成员变量:有默认值

        局部变量:没有默认值,必须定义,赋值,然后才能使用

    注意事项:

             局部变量名称可以和成员变量名称一样,在方法中使用的时候,采    用的是就近原则。

2. 形式参数的问题?(理解)

    (1)形式参数是类:

如果你看到一个方法需要的参数是一个类名,就应该知道这里实际需要的是一个具体的对象。

  1. 形式参数是基本类型:

    基本类型:形式参数的改变不影响实际参数

    引用类型:形式参数的改变直接影响实际参数的值

    3. 匿名对象(理解)

        (1)没有名字的对象

        (2)应用场景

            A:调用方法,仅仅只调用一次的时候。(注意:不适合调用多次

            b:可以作为实际参数传递。

        (3)匿名调用有什么好处?

    答:有,匿名对象在调用完毕之后就是垃圾,可以被垃圾回收器回收

    4. 封装(理解)

        (1)隐藏实现细节,提供公共的访问方式

        (2)好处:

            A:隐藏实现细节,提供公共的访问方式

            B:提高代码的复用性

            C:提高代码的安全性

        (3)设计原则

            把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式

        (4)private是封装的一种体现。

            封装:类,方法,private修饰成员变量

     

    5. private关键字(掌握)

        (1)私有的意义,可以修饰成员变量和成员方法

        (2)特点:

            被private修饰的后的成员只能在本类中被访问

        (3)private的应用:

            以后再写一个类的时候:

                把所有的成员变量给private

                提供对应的getXxx()/setXxx()方法

     

    6. this关键字(掌握)

        (1)代表当前类的引用对象

            记住:哪个对象调用方法,该方法内部的this就代表那个对象

        (2)this的应用场景:

            A:解决了局部变量隐藏成员变量的问题

            B:其实this还有其他的应用,明天讲解。

     

    7. 构造方法(掌握)

        (1)作用:

    用于给对象的数据进行初始化

        (2)格式:

            A:方法名和类名相同

            B:没有返回值类型,连void都不能有

            C:没有返回值

            

            思考题:构造方法中可不可以有return语句呢?

            可以。而是我们写成这个样子就OK了:return;

            其实,在任何的void类型的方法的最后你都可以写上:return;

        (3)构造方法的注意事项

            A:如果我们没写构造方法,系统将提供一个默认的无参构造方法

            B:如果我们给出了构造方法,系统将不再提供默认的无参构造方法

                如果这个时候,我们要使用无参构造方法,就必须自己给出。

                推荐:永远手动自己给出无参构造方法。

        (4)给成员变量赋值的方式

            A:setXxx()

            B:带参构造方法

        (5)标准案例

            

    class Student {

        private String name;

        private int age;

     

        public Student() {

        }

     

        public Student(String name, int age) {

            this.name = name;

            this.age = age;

        }

     

        public String getName() {

            return name;

        }

     

        public void setName(String name) {

            this.name = name;

        }

     

        public int getAge() {

            return age;

        }

     

        public void setAge(int age) {

            this.age = age;

        }

    }

     

            测试:

            

    class StudentDemo {

        public static void main(String[] args) {

            // 方式1

            Student s1 = new Student();

            s1.setName("林青霞");

            s1.setAge(27);

            System.out.println(s1.getName() + "---" + s1.getAge());

     

            // 方式2

            Student s2 = new Student("刘意", 30);

            System.out.println(s2.getName() + "---" + s2.getAge());

        }

    }

     

    8. 成员方法的分类及使用

  2. .根据返回值分类:
    1. Void类型
    2. void类型

     

  3. .根据形式参数分类:
    1. 空参方法
    2. 非空参方法
  4. .代码举例:

     

    class Student {

        public String getString() {

            return "helloworld";

        }

     

        public void show() {

            System.out.println("show");

        }

     

        public void method(String name) {

            System.out.println(name);

        }

     

        public String function(String s1, String s2) {

            return s1 + s2;

        }

    }

     

    class StudentDemo {

        public static void main(String[] args) {

            // 创建对象

            Student s = new Student();

     

            // 调用无参无返回值方法

            s.show();

     

            // 调用无参有返回值方法

            String result = s.getString();

            System.out.println(result);

     

            // 调用带参无返回值的方法

            s.method("林青霞");

     

            // 调用带参带返回值的方法

            String result2 = s.function("hello", "world");

            System.out.println(result2);

        }

    }

     

     

    9. 代码:Student s = new Student();做了哪些事情?(理解)

        (1)把Student.class文件加载到内存

        (2)在栈内存为s开辟空间

        (3)在堆内存为学生对象申请空间

        (4)给学生的成员变量进行默认初始化null,0

        (5)给学生的成员变量进行显示初始化。林青霞,27

        (6)通过构造方法给成员变量进行初始化。刘意,30

        (7)对象构造完毕后,把堆内存的地址赋值给栈内存的s变量

            

    10. 面向对象的练习题(掌握)

        (1)标准的手机类的定义和测试

        (2)Demo类有求和方法,Test类进行测试。

            A) 变量什么时候定义为成员变量?

    答:如果这个变量是用来描述这个类的信息时,那么,该变量就应该定义为成员变量。

    B) 变量到底定义在哪里比较好?

    答:变量的范围是越小越好,因为能及时的被回收。

            

        (3)长方形案例

        (4)员工案例

        (5)MyMath案例(自己提供加减乘除并测试)

     

     

    11. 关键字static 引入和应用

    (1). static 的特点:(它可以修饰成员变量,还可以修饰成员方法)

    A:随着类的加载而加载

    B:优先于对象存在

    C:被类的所有对象所共享

            举例:班级的学生应该共用同一个班级编号

    其实这个特点也是在告诉我们什么时候使用静态?

    答:如果某个成员变量是被所有对象共享的,那么它就应该被定义为静态的

    D:可以通过类名调用

    其实他本身也可以通过对象调用

    推荐使用类名调用

    静态修饰的内容一般我们称其为:与类相关的,类成员

    (2). Static 关键字的内存图解

    (3).static 的注意事项

        A:在静态方法中是没有this关键字的

            如何理解呢?

                静态是随着类的加载而加载,this是随着对象的创建而存在。

                静态比对象先存在。

        B:静态方法只能访问静态的成员变量和静态的成员方法

                a: 静态方法:

                    a). 成员变量:只能访问静态变量

                    b). 成员方法:只能访问静态成员方法

                b: 非静态方法:

                    a). 成员变量:可以是静态方法,也可以是非静态方法

                    b). 成员方法:可是是静态的成员方法,也可以是非静态的                                    成员方法。

                简单记:

                    A)静态只能访问静态。

    B) 非静态的:既可以访问非静态的,也可以访问静态的

     

     

    12. 静态变量和成员变量的区别(理解)

    1. 所属不同
      1. 静态变量属于类,所有也称为类变量
      2. 成员变量属于对象,所以也称为实例变量(对象变量)
    2. 在内存中的位置不同
      1. 静态变量存储于方法区的静态区
      2. 成员变量存储于堆内存
    3. 内存中出现的时间不同
      1. 静态变量随着类的加载而加载,随着类的消失而消失
      2. 成员变量随着对象的创建而存在,随着对象的消失而消失
    4. 调用不同
      1. 静态变量可以通过类名调用,也可以通过对象调用
      2. 成员变量只能通过对象调用

    13. main 方法的格式讲解

    public static void main(String[] args) {...}

    Public: 公共的,访问权限是最大的,由于main方法是被jvm调用,所以权限要够大

    Static:静态的,不需要创建对象,通过类名就可以调用,方便jvm直接调用

    void :因为我们曾经说过,方法的返回值是返回非调用者的,而main方法是被jvm调用,所以你返回内容给 jvm 是没有意义的

    main :是一个常见的方法入口,我见过的语言都是以 main 作为方法入口的

    String[] args : 这是一个字符串数组,值去哪里呢?

    这个东西到底有什么用啊?怎么给值呢?

    答:这个东西早期是为了接受键盘录入的数据的

    格式为: java MainDemo hello world java

     

    class MainDemo {

        public static void main(String[] args) {

            // System.out.println(args); //[Ljava.lang.String;@175078b

            // System.out.println(args.length); //0

            // System.out.println(args[0]); //ArrayIndexOutOfBoundsException

     

            // 接收数据后

            System.out.println(args);

            System.out.println(args.length);

            // System.out.println(args[0]);

            for (int x = 0; x < args.length; x++) {

                System.out.println(args[x]);

            }

        }

    }

posted @ 2016-09-15 10:47  runningto  阅读(184)  评论(0编辑  收藏  举报