首页 > 编程语言 >java笔记6

java笔记6

时间:2024-08-07 14:49:17浏览次数:17  
标签:java String 子类 多态 笔记 System Animal 字符串

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; // 自动拆箱

标签:java,String,子类,多态,笔记,System,Animal,字符串
From: https://www.cnblogs.com/cjsbx/p/18347025

相关文章

  • Living-Dream 系列笔记 第76期
    UVA1328简单题。我们有结论:对于一个周期串S的子串T,它的最小循环节即为T-nxt_{\left|T\right|}。(具体请查阅往期笔记)于是,我们枚举所有前缀,检验上式是否能被当前前缀的长度整除并且不止一个循环节即可。code#include<bits/stdc++.h>usingnamespacestd;constintN=......
  • 高频Java面试题集锦(含答案)
    第一章-Java篇1、Object中有哪些方法   难度系数:⭐protectedObjectclone()--->创建并返回此对象的一个副本。booleanequals(Objectobj)--->指示某个其他对象是否与此对象“相等protectedvoidfinalize()--->当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾......
  • java 反编译工具之jd_gui
    1下载地址  https://java-decompiler.github.io/2 下载解压后,显示4个文件 3、双击jd_gui.exe启动4、打开file--openfile菜单,选择要处理的jar包或.class文件 4、点菜单“saveallsources",将源文件另存为.zip压缩文件,自行解压即可查看所有代码;附:百度网盘链接 链......
  • Java SE核心技术——10接口
    接口就是一种规范或标准,只要符合这个标准都可以通用,接口的表现在于对行为的抽象。就好比插座,每个厂商生产的插座我们都可以用,这是因为他们有同一个标准,这里插座就是接口。//接口的定义格式与定义类的格式基本相同,将class关键字换成interface关键字,就定义了一个接口public......
  • Java SE核心技术——11多态
    多态的概念多态是指一个变量在不同的环境中有不同的体现,是面向对象特征之一多态就是同一个接口,使用不同的实例而执行不同的操作多态是对象多种表现形式的体现:同一时间发生在不同对象上会产生不同的结果。多态的优点消除类型之间的耦合关系可替换性可扩充性接口性灵活......
  • 第一课jdk17,java技术路线
    用对话形式,阐述中学生都能听懂的java入门篇,不涉及具体技术细节。场景1:-面试官A-求职者BA:什么是java?B:java是一门编程语言,主要用于后台开发、web开发。//说是什么和具体实际应用。A:什么是后台?B:后台的质量决定了服务器处理高并发、网络安全问题等性能。后台类似餐厅的后厨,......
  • 笔记:从Aurora 8b/10b 到Aurora 64b/66b (三):自定义PHY层收发
    相较于8/10来说没那么复杂,需要考虑的情况只有八种;但是gearbox的控制需要额外的心思:每三十二周期所有操作都需要停止;这一点在收发都需要注意;RX:核心思想是利用header做检测,将夹杂在数据流中的控制包滤除掉;modulegt_phy_rx(inputwirei_rx_clk......
  • Java程序设计:Java IO(2)
    目录1实验名称2实验目的3实验源代码4实验运行结果图5总结1实验名称   JavaIO2实验目的    继续熟练掌握在eclipse中调试代码    掌握Java IO中流的基本概念及使用方法    掌握文件锁、Scanner解析文件的使用方法3实验源代......
  • Java程序设计:Java IO
    目录1实验名称2实验目的3实验源代码4实验运行结果图5总结1实验名称   JavaIO2实验目的    继续熟练掌握在IDEA中调试代码    掌握File类的基本使用    掌握Java IO中流的基本概念及使用方法    掌握文件IO流、缓冲流......
  • Java计算机毕业设计基于Android的公交线路状态查询系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,公共交通系统成为了城市居民日常出行不可或缺的一部分。然而,传统的公交线路查询方式往往依赖于纸质地图、公交站牌或电话查询,这......