Skip to content

Java

标签
绩点/专业课
开发/基础/语言
字数
776 字
阅读时间
4 分钟

SEE YOU AGAIN

和 Gemini 聊了一晚上,这没怎么写了

构造方法

易错点

子类会自动调用父类的无参构造方法;父类没有无参调用方法则需要显式调用

关键字

static

访问修饰符 private protected public

非访问修饰符 final

this 和 super

this

  1. 区分成员变量和局部变量
Java
public class Student {
    private String name; // 成员变量

    public Student(String name) { // 构造方法的参数
        this.name = name; // 使用this.name来指代成员变量,name指代参数
    }

    public void setName(String name) { // 方法的参数
        this.name = name; // 同上
    }

    public String getName() {
        return this.name; // 这里的this可以省略,因为没有命名冲突
    }
}
  1. 在构造方法中调用其他构造方法 必须是第一条
Java
public class Rectangle {
    private int width;
    private int height;

    public Rectangle() {
        this(1, 1); // 调用下面的有参构造方法,创建默认大小的矩形
    }

    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }
}
  1. 返回当前类的实例
Java
public class Calculator {
    private int result = 0;

    public Calculator add(int num) {
        this.result += num;
        return this; // 返回当前对象,以便继续调用其他方法
    }

    public Calculator subtract(int num) {
        this.result -= num;
        return this;
    }

    public int getResult() {
        return this.result;
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int finalResult = calc.add(10).subtract(3).getResult(); // 链式调用
        System.out.println(finalResult); // 输出 7
    }
}

super

  1. 调用父类的构造方法 必须是第一条
Java
public class Animal {
    private String name;

    public Animal(String name) {
        this.name = name;
    }
}

public class Dog extends Animal {
    public Dog(String name) {
        super(name); // 调用父类Animal的有参构造方法
    }
}
  1. 访问父类的成员变量
Java
public class Parent {
    String message = "Hello from Parent";
}

public class Child extends Parent {
    String message = "Hello from Child";

    public void printMessages() {
        System.out.println(this.message); // 输出 "Hello from Child"
        System.out.println(super.message); // 输出 "Hello from Parent"
    }
}```
3. 调用被子类重写的方法
```Java
public class Vehicle {
    public void move() {
        System.out.println("Vehicle is moving");
    }
}

public class Car extends Vehicle {
    @Override
    public void move() {
        super.move(); // 调用父类Vehicle的move方法
        System.out.println("Car is moving on the road");
    }
}

Tip 1: 不可连续使用,如super.super

字符串

表达式对象的最终位置描述
"Hello"字符串常量池字符串字面量,在池中是唯一的
new String("Hello")堆 (Heap)强制在堆上创建一个新的对象,地址是全新的
new String("Hello").intern()字符串常量池方法调用,其返回值是池中对象的引用

易错题

2. (单选题, 3.8分) 下列代码会出现数据溢出的情况是:

A int i = 128; byte b = (byte)i;

B double d = 1.0; int i = (int)d;

C int i = 5; long l = i;

D short s = 2; int i = s;

3. (单选题, 3.8分) 下列关于类的继承说法错误的是?

A 子类继承父类

B Java支持多继承

C 子类可重写父类方法

D 子类可拥有父类属性

misc

java 加号左结合 a+b+c = (a+b)+c

setlist arraylistlinkedlist

arr.length str.length()

类/接口 异常 线程thread IO

贡献者

页面历史