java笔记6

10.多态

多态的概念

多态(Polymorphism)是面向对象编程的核心概念之一,它指的是同一个接口可以被多个不同的类实现,或者同一个操作作用于不同的对象时可以有不同的解释和行为。

为何要用多态

多态的使用使得代码更加灵活和可扩展,它允许编写的代码可以对不同类型的对象执行不同的操作。

多态的优点

  • 解耦:多态减少了类与类之间的耦合,提高了代码的可维护性。
  • 扩展性:通过多态,可以轻松添加新的类,而无需修改现有的代码。
  • 灵活性:多态允许使用统一的接口来处理不同类型的对象。

多态的分类

  • 重载(Overloading):编译时多态,方法名相同,参数列表不同。
  • 重写(Overriding):运行时多态,子类重写父类的方法。
  • 泛型(Generics):在编译时提供类型安全。
  • 接口多态:实现接口的不同类可以有不同的实现。

多态的机制原理

Java中的多态主要通过以下几个机制实现:

  • 方法重写:子类可以重写父类的方法,当调用子类对象的方法时,将调用子类重写的方法。
  • 动态绑定:在运行时,Java虚拟机(JVM)根据对象的实际类型来选择调用哪个方法。
  • 接口实现:类实现接口时,可以提供接口方法的具体实现,不同的实现类可以有不同的行为。

示例代码

复制代码
// 父类
class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

// 子类重写父类方法
class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Dog barks");
    }
}

// 子类
class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("Cat meows");
    }
}

// 使用多态
public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        // 多态的体现:通过父类引用调用子类的方法
        myAnimal.makeSound(); // 输出: Animal makes a sound
        myDog.makeSound();    // 输出: Dog barks
        myCat.makeSound();    // 输出: Cat meows

        // 运行时多态:JVM在运行时确定调用的方法
    }
}

11.常用类

System类

System类提供了一些与系统相关的方法,如:

  • System.out:标准输出流。
  • System.in:标准输入流。
  • System.exit(int status):终止程序并返回状态码。

Runtime类

Runtime类允许与运行时环境进行交互,例如:

  • Runtime.getRuntime():获取运行时对象。
  • exec(String command):执行指定的字符串命令。
  • availableProcessors():返回可用的处理器数量。

String类

String类用于表示和操作字符串。

字符串常量池

Java使用特殊的字符串常量池来存储字符串字面量,以节省内存。

常见方法

  • charAt(int index):返回字符串中指定位置的字符。
  • indexOf(String s):返回子字符串第一次出现的索引。
  • startsWith(String s):测试字符串是否以指定前缀开始。
  • endsWith(String s):测试字符串是否以指定后缀结束。
  • substring(int index):返回字符串的子字符串。
  • substring(int startIndex, int endIndex):返回从startIndexendIndex - 1的子字符串。
  • replace(char a, char b):替换字符串中的字符。
  • trim():去除字符串两端的空白。
  • concat(String str):连接字符串。
  • split(String regex):根据正则表达式拆分字符串。

正则表达式

正则表达式是一种文本模式,包括:

  • 字符通配符:如.匹配任意单个字符。
  • 次数通配符:如*表示前一个字符的零次或多次出现。
  • 其他通配符:如\d匹配数字。

StringBuffer和StringBuilder

  • StringBuffer:线程安全的可变字符串。
  • StringBuilder:非线程安全的,性能更优的可变字符串。

日期时间类

Date类

Date类用于表示特定的瞬间,精确到毫秒。

SimpleDateFormat类

用于格式化和解析日期。

Calendar类

Calendar类是一个抽象类,提供了一系列方法来操作日期和时间。

数字类

Math类

Math类包含了一系列数学运算的方法,如:

  • abs():绝对值。
  • sqrt():平方根。
  • pow():指数。
  • round():四舍五入。

包装类

包装类是基本数据类型的类形式。

什么是包装类

Java为每个基本数据类型提供了对应的包装类,如Integer对应int

包装类的特点

  • 提供了方法和属性。
  • 可以为null
  • 可以用于泛型和集合。

基本数据类型与包装类

基本数据类型和包装类之间可以相互转换。

包装类共同点

所有包装类都继承自java.lang.Number

自动装箱/拆箱

Java自动将基本数据类型转换为对应的包装类(装箱),或将包装类转换为基本数据类型(拆箱)。

复制代码
Integer num = 5; // 自动装箱
int i = num; // 自动拆箱

posted @   cj睡不醒  阅读(8)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示