javaSE第七天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]);

    ????????}

    ????}

    }

以上是关于javaSE第七天的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE复习基础巩固

javaSE第二十七天

JavaSE习题 第七章 常用实用类

JavaSE-常用API

007期JavaSE面试题:异常

Java全栈JavaSE:2.数据库之Mysql下