Java复习笔记

Java 复习笔记

面向对象

特点:

  1. 将复杂的事情简单化。
  2. 面向对象将以前的过程中的执行者,变成指挥者。
  3. 面向对象这种思想是符合现在人们思考习惯的一种思想。

在类中定义其实都称之为成员,成员有两种:

  1. 成员变量:其实对应的就是事物的属性。
  2. 成员函数:其实对应的就是事物的行为。

private

  • private int age; // 私有的访问权限最低,只有在本类中的访问有效。
  • 注意:私有仅仅是封装的一种体现形式而已。

构造函数:

用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。

特点:

  1. 该函数的名称和所在类的名称相同。
  2. 不需要定义返回值类型。
  3. 该函数没有具体的返回值。

所有对象创建时,都需要初始化才可以使用。

构造函数和一般函数有什么区别?

  1. 两个函数定义格式不同。
  2. 构造函数在对象创建时,就被调用,用于初始化,而且初始化只执行一次。一般函数,是对象创建后,需要调用才执行,可以被调用多次。

Student student = new Student();

创建一个对象都在内存中做了什么事情?

  1. 先将硬盘指定位置的Student.class文件加载进内存
  2. 执行main方法时,在栈内存中开辟main方法的空间(压栈-进栈),然后在main方法中的栈区分配一个变量student。
  3. 在堆内存中开辟一个实体空间,分配了一个内存首地址值,new
  4. 在该实体空间中进行属性的空间分配,并进行默认初始化。
  5. 在对空间中的属性进行显示初始化。
  6. 进行实体对应的构造函数,进行构造函数的初始化。
  7. 将首地址赋值给student,student变量就引用了该实体(指向了该对象)。

代码示例:

package JavaOOP;

// 类和对象

public class Student {

    // 属性
    int id;
    String name;
    int age;

    Computer computer; // 计算机
    // 方法
    void study(){
        System.out.println("我在认真学习!使用电脑:"+computer.brand);
    }

    void play(){
        System.out.println("我在玩游戏!");
    }

    // 无参的构造方法,用于创建这个类的对象,无参的构造方法可以由系统自动的创建
    Student(){

    }

    // main 方法:程序执行的入口 必须要有
    public static void main(String[] args) {
        // 创建student对象
        Student student = new Student();
        student.id=01;
        student.name="羊星鱼";
        student.age=18;

        Computer c1 = new Computer();
        c1.brand="联想";

        student.computer = c1;
        //  调用play方法
        student.play();
        student.study();
    }

}


// 一个java文件可以有多个类,但只能有一个public修饰类
class Computer{
    String brand; // 品牌
}

对象的创建过程和this关键字

this 指代当前对象,就是所在函数所属对象的引用 ,在定义功能时,该功能的对象,用this来表示这个对象.

this 还可以用于构造函数间的调用.

this的本质就是"创建好的对象的地址",由于在构造方法调用前,对象已经创建,因此,在构造方法中也可以使用this代表"当前对象"

this常用方法

  • this不能用于static方法中
  • 使用this关键字调用重载的构造方法,避免相同的初始化代码,但只能在构造方法中用,并且必须位于构造方法的第一句
  • 在程序中产生二义性之处,应使用this指明当前对象;普通方法中,this总是指向调用该方法的对象;构造方法中,this总是指向正要初始化的对象.

调用格式: this(实际参数);

  • this对象后面跟上.调用的是成员属性和成员方法(一般方法);
  • this对象后面跟上()调用的是本类中的对应参数的构造函数.
  • this调用的构造函数,必须定义在构造函数的第一行,构造函数是用初始化的,所以初始化动作一定要执行,否则编译失败.

代码示例:

package JavaOOP;

public class TestThis {

    int a,b,c;

    TestThis(int a,int b){
        //  就近原则
        this.a = a;
        this.b = b;
    }

    TestThis(int a,int b,int c){
        // 这个this指调用上面构造器,且必须位于第一句
        this(a,b);
        this.c = c;
    }

    void sing(){
    }

    void eat(){
        // 调用本类中的sing
        // 这个this可写可不写
        this.sing();
        System.out.println("你妈喊你回家吃饭!");
    }

    public static void main(String[] args) {
        TestThis testThis = new TestThis(2,3);
        testThis.eat();
    }
}

创建一个对象分为四步:

  1. 分配对象空间,并将对象成员变量初始化为0或空
  2. 执行属性值显示初始化
  3. 执行构造方法
  4. 返回对象的地址给相关的变量

static关键字

特点:

  1. 实现对象中的共性数据的共享,可以将这个数据进行静态修饰。
  2. 被静态修饰的成员,可以直接被类名所调用。
  3. 静态随着类的加载而加载,而且由于对象存在。

弊端:

  1. 静态方法只能访问静态成员,不可以访问非静态成员。
  2. 静态方法中不能使用this,super关键字。
  3. 主函数是静态的

关于权限:

  • public:访问权限最大。
  • static:不需要对象,直接类名即可。
  • void:主函数没有返回值
  • main:主函数特定的名称

注意:

  • 在类中,用static声明的成员变量为静态成员变量,也称为类变量,类变量的生命周期和类像相同,在整个应用程序执行期间都有效。
  • static修饰的成员变量和方法,从属于类。
  • 普通方法和方法从属于对象

你可能感兴趣的:(notes,java)