Java——基础语法(二)

前言

在这里插入图片描述
「作者主页」:雪碧有白泡泡
「个人网站」:雪碧的个人网站
「推荐专栏」

java一站式服务
React从入门到精通
前端炫酷代码分享
★ 从0到英雄,vue成神之路★
uniapp-从构建到提升
从0到英雄,vue成神之路
解决算法,一个专栏就够了
架构咱们从0说
★ 数据流通的精妙之道★
★后端进阶之路★

请添加图片描述
在这里插入图片描述

继上一篇Java——基础语法(一)后的续文

文章目录

  • 前言
  • 5. 继承与多态:
    • 继承的基本概念
    • 继承的特点
    • 多态的基本概念
    • 多态的实现方式
    • 强制类型转换
    • 抽象类与抽象方法
    • 接口
    • 总结
  • 6. 接口:
    • 接口的概念
    • 接口的特点
    • 接口的使用方法
    • 接口的实现
    • 接口的继承
    • 接口的应用场景
  • 7. 泛型:
    • 泛型的概念
    • 泛型的特点
    • 泛型的使用方法
    • 泛型类
    • 泛型方法
    • 通配符
    • 泛型的应用场景
      • 泛型类
      • 泛型方法
      • 通配符
      • 泛型接口
      • 泛型枚举

5. 继承与多态:

Java支持继承和多态。继承是一种面向对象编程的重要技术,它可以使一个新的类获取已有类的属性和方法。多态指的是同一个方法在不同情况下表现出不同的行为。

下面我将详细介绍Java中的继承与多态。

继承的基本概念

在Java中,继承是一种面向对象编程的机制,它允许一个类从另一个类继承属性和行为。被继承的类称为父类或基类,继承的类称为子类或派生类。继承使得代码重用更加容易,同时也提高了代码的可读性和可维护性。

Java中使用关键字extends来实现继承关系,示例代码如下:

public class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking.");
    }
}

在上面的代码中,Dog类继承自Animal类,因此Dog类具有父类Animal中的成员方法eat()。

继承的特点

  • 子类可以继承父类的成员变量和成员方法,包括公有、受保护和默认访问级别的成员。
  • 子类可以重写父类的成员方法以实现特定需求。
  • 子类可以添加新的成员变量和成员方法,以满足特定需求。
  • 子类不能直接访问父类的私有成员变量和私有成员方法,但可以通过父类的公有或受保护成员方法来访问。

多态的基本概念

多态是面向对象编程中的一种特性,它允许不同的对象对同一消息做出不同的响应。在Java中,多态可以通过方法重载和方法重写来实现。

  • 方法重载:方法重载是指在一个类中定义多个具有相同方法名但参数列表不同的方法。Java会根据方法的参数列表来决定调用哪个方法。
  • 方法重写:方法重写是指在子类中对父类的某个方法进行重新定义。子类重写的方法必须与父类的方法具有相同的名称、参数列表和返回类型,并且访问修饰符不能更严格。

示例代码:

public class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

public class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("Dog is eating bones.");
    }
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("Cat is eating fish.");
    }
}

上述代码中,Dog类和Cat类都重写了父类Animal中的eat()方法。当调用eat()方法时,Java虚拟机会根据具体调用的对象类型来决定调用哪个方法。

多态的实现方式

在Java中,多态有两种实现方式:通过继承和接口来实现多态。

  • 通过继承实现多态:

    在继承体系中,父类指针可以指向子类对象。使用父类的引用变量来调用重写的方法时,Java虚拟机会根据具体调用的对象类型来决定调用哪个方法。

    示例代码:

    Animal ani1 = new Dog();
    Animal ani2 = new Cat();
    ani1.eat();   // 输出:Dog is eating bones.
    ani2.eat();   // 输出:Cat is eating fish.
    
  • 通过接口实现多态:

    接口是一种特殊的抽象类,它只定义了方法的声明而没有提供方法的实现。一个类可以实现多个接口,从而具有不同的行为特征。Java中通过将对象引用转换为接口类型来实现多态。使用接口的引用变量来调用实现类中的方法时,Java虚拟机会根据具体调用的对象类型来决定调用哪个方法。

示例代码:

interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Draw a circle.");
    }
}

class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Draw a rectangle.");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape s1 = new Circle();
        Shape s2 = new Rectangle();
        s1.draw();  // 输出:Draw a circle.
        s2.draw();  // 输出:Draw a rectangle.
    }
}

在上述代码中,Circle和Rectangle类都实现了Shape接口,并重写了接口中的draw()方法。当使用接口的引用变量来调用实现类中的方法时,Java虚拟机会根据具体调用的对象类型来决定调用哪个方法。

强制类型转换

在Java中,可以使用强制类型转换将父类引用变量转换为子类引用变量,以方便访问子类特有的成员。

示例代码:

Animal ani = new Dog();
if (ani instanceof Dog) {
    Dog d = (Dog)ani;
    d.bark();
}

在上述代码中,ani是一个Animal类的引用变量,但它指向的是一个Dog类的实例。通过使用instanceof运算符可以判断ani是否指向了一个Dog类的实例。如果是,则可以使用强制类型转换将ani转换为Dog类型,以便访问Dog类特有的方法bark()。

需要注意的是,如果进行强制类型转换时,实际对象不是所需类型的子类,会抛出ClassCastException异常。因此,在进行强制类型转换之前,最好先使用instanceof运算符进行类型检查。
6. 调用父类的构造方法

在Java中,子类继承了父类的所有属性和方法,但并没有继承父类的构造方法。因此,在子类的构造方法中调用父类的构造方法是非常必要的,以确保父类的成员变量得到正确的初始化。

在子类的构造方法中使用super关键字来调用父类的构造方法。如果父类有多个构造方法,则可以通过super关键字指定需要调用的构造方法。

示例代码:

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

public class Dog extends Animal {
    private int age;
    public Dog(String name, int age) {
        super(name);  // 调用父类的构造方法
        this.age = age;
    }
}

在上述代码中,Dog类继承自Animal类,并在其构造方法中调用了Animal类的构造方法。

抽象类与抽象方法

抽象类是一种特殊的类,它不能被实例化,只能作为其他类的父类使用。抽象类中可以包含抽象方法,抽象方法没有具体的实现,只有方法的声明。

在Java中,使用abstract关键字来定义一个抽象类或抽象方法。如果一个类包含抽象方法,则这个类必须是抽象类。

示例代码:

abstract class Shape {
    abstract void draw();
}

class Circle extends Shape {
    @Override
    void draw() {
        System.out.println("Draw a circle.");
    }
}

class Rectangle extends Shape {
    @Override
    void draw() {
        System.out.println("Draw a rectangle.");
    }
}

在上述代码中,Shape类是一个抽象类,其中包含了一个抽象方法draw()。Circle类和Rectangle类都继承自Shape类,并实现了draw()方法。

需要注意的是,如果一个类继承了一个抽象类,则必须实现抽象类中的所有抽象方法,否则该类也必须声明为抽象类。

接口

接口是一种特殊的抽象类,它只定义了方法的声明而没有提供方法的实现。一个类可以实现多个接口,从而具有不同的行为特征。

在Java中,使用interface关键字来定义一个接口。接口中的方法默认都是公有的抽象方法,也可以定义常量和默认方法、静态方法。

示例代码:

interface Shape {
    double PI = 3.14;  // 定义常量
    void draw();       // 定义抽象方法
    default void show() {   // 定义默认方法
        System.out.println("This is a shape.");
    }
    static void info() {    // 定义静态方法
        System.out.println("This is a shape interface.");
    }
}

class Circle implements Shape {
    private double radius;
    public Circle(double radius) {
        this.radius = radius;
    }
    @Override
    public void draw() {
        System.out.println("Draw a circle with radius " + radius);
    }
}

在上述代码中,Shape接口定义了一个常量PI,以及一个抽象方法draw()、一个默认方法show()、一个静态方法info()。Circle类实现了Shape接口,并重写了其中的draw()方法。

需要注意的是,如果一个类实现了一个接口,则必须实现接口中的所有方法,否则该类必须声明为抽象类。

总结

继承和多态是面向对象编程中非常重要的概念。继承使得代码重用更加容易,同时也提高了代码的可读性和可维护性。多态是面向对象编程中一个非常强大的特性,它可以让不同的对象对同一消息做出不同的响应。

在Java中,使用extends关键字来实现继承关系,使用super关键字来调用父类的构造方法。多态可以通过方法重载和方法重写来实现,以及通过接口来实现。在进行强制类型转换时,需要注意进行类型检查,避免发生ClassCastException异常。此外,抽象类和接口也是面向对象编程中非常重要的概念,它们可以帮助我们更好地组织代码、封装数据和实现复杂功能。

6. 接口:

Java中的接口是一组抽象方法的集合。接口可以被类实现,而一个类也可以实现多个接口。接口使用interface关键字进行定义。
下面我将详细介绍Java中接口的概念、特点、使用方法及应用场景。

接口的概念

在Java中,接口是一种特殊的抽象类,它只包含方法定义和常量声明,而没有具体的方法实现。接口可以让多个不同的类实现相同的方法,从而达到代码重用的目的。同时,接口也可以用于实现回调机制(callback),即某个对象在特定情况下调用另一个对象的方法。

接口的特点

  • 接口中的所有方法都是公有的抽象方法,不包含具体的方法实现。
  • 接口中可以定义常量,但不能定义变量。
  • 接口不能被实例化,只能被实现。
  • 一个类可以实现多个接口。
  • 一个接口可以继承多个接口。

接口的使用方法

在Java中,使用关键字interface来定义一个接口。接口中的方法默认都是公有的抽象方法,可以在方法名前添加abstract关键字,但不是必须的。

示例代码:

public interface Shape {
    double getArea();
    double getPerimeter();
}

在上述代码中,定义了一个Shape接口,其中包含了两个方法getArea()和getPerimeter(),这两个方法都是公有的抽象方法。该接口可以被其他类实现,以提供不同的形状计算面积和周长的功能。

接口的实现

在Java中,使用关键字implements来实现一个接口。一个类可以实现多个接口,实现接口的类必须实现接口中声明的所有方法。

示例代码:

public class Circle implements Shape {
    private double radius;
    public Circle(double radius) {
        this.radius = radius;
    }
    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
    @Override
    public double getPerimeter() {
        return 2 * Math.PI * radius;
    }
}

在上述代码中,Circle类实现了Shape接口,并重写了其中的getArea()和getPerimeter()方法。

接口的继承

在Java中,接口也可以继承另一个接口,从而允许子接口继承父接口的方法定义。

示例代码:

public interface Drawable {
    void draw();
}

public interface Shape extends Drawable {
    double getArea();
    double getPerimeter();
}

在上述代码中,Shape接口继承了Drawable接口,并扩展了两个新的方法getArea()和getPerimeter()。

接口的应用场景

  • 实现多态:接口可以让多个不同的类实现相同的方法,从而达到代码重用的目的。
  • 实现回调机制:接口可以用于实现回调机制,即某个对象在特定情况下调用另一个对象的方法。
  • 限制类的继承:接口可以作为一种约束,限制某个类的继承关系。如果某个类实现了某个接口,就必须实现该接口中声明的所有方法。
  • 定义常量:接口可以定义常量,供其他类使用。

总之,接口是Java中非常重要的概念之一,它可以让我们更好地组织代码、封装数据和实现复杂功能。在设计API时,接口也是非常常见的一种设计模式,它可以提高 API 的可扩展性和可维护性。

7. 泛型:

泛型是Java语言中的一个强大特性,它可以使代码更加灵活和安全。使用泛型可以将类型参数化,从而使代码更好地适应不同的数据类型。

好的,下面我将详细介绍Java中泛型的概念、特点、使用方法及应用场景。

泛型的概念

在Java中,泛型(Generic)是一种参数化类型的机制,它可以让我们定义一个类或方法,使其可以支持多种不同的数据类型。通俗地说,泛型就是把数据类型作为参数传递给类或方法,从而实现代码的重用和扩展。

泛型的特点

  • 泛型支持可编译时类型检查,能够在编译时发现类型错误。
  • 泛型可以减少代码重复,提高代码的可读性和可维护性。
  • 泛型可以增加程序的灵活性和扩展性。

泛型的使用方法

在Java中,使用尖括号<>来指定泛型类型,例如:

List<String> list = new ArrayList<>();

在上述代码中,List是一个泛型接口,其中包含了多个操作列表的方法,String表示元素的类型,ArrayList是一个基于数组实现的 List 接口的可变长度的数组序列。

泛型类

在Java中,我们可以定义一个泛型类,使其可以支持多种不同类型的对象。泛型类在定义时要在类名后面添加类型参数,如下所示:

public class Box<T> {
    private T data;
    public Box(T data) {
        this.data = data;
    }
    public T getData() {
        return data;
    }
}

在上述代码中,Box类是一个泛型类,其中定义了一个类型参数T,表示Box可以存储任意类型的数据。在创建Box对象时,需要指定T的具体类型。

泛型方法

在Java中,我们也可以定义一个泛型方法,使其可以支持多种不同类型的参数。泛型方法在定义时要在方法名前面添加类型参数,如下所示:

public class ArrayUtil {
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.printf("%s ", element);
        }
        System.out.println();
    }
}

在上述代码中,printArray()是一个泛型方法,其中定义了一个类型参数T,表示该方法可以处理任意类型的数组。在调用printArray()方法时,需要指定T的具体类型。

通配符

在Java中,我们可以使用通配符(wildcard)来表示某种类型的子类或父类。

  • ? extends T 表示某种类型的子类。
  • ? super T 表示某种类型的父类。

示例代码:

public class Animal {}
public class Dog extends Animal {}

List<? extends Animal> list1 = new ArrayList<Dog>(); // 子类向父类转换
List<? super Dog> list2 = new ArrayList<Animal>(); // 父类向子类转换

在上述代码中,list1表示包含所有Animal的子类的List,可以接收Dog类型的List;list2表示包含所有Dog的父类的List,可以接收Animal类型的List。这样就可以实现子类向父类转换和父类向子类转换。

泛型的应用场景

  • 集合类:Java中的集合类(如List、Set、Map等)都是使用泛型来实现的。
  • 接口与抽象类:泛型可以被用于接口和抽象类中,使其支持多种不同类型的对象。
  • 类型安全:泛型可以保证编写类型安全的代码,避免了强制类型转换时的运行时错误。
  • 反射机制:泛型可以与反射机制相结合,使得我们可以在运行时获取到泛型信息。

总之,泛型是Java中非常重要的概念之一,泛型可以使我们在编译时发现类型错误,从而提高代码的健壮性和可读性。它还可以减少代码重复,提高代码的可维护性和可扩展性。

二,泛型不仅适用于类,还适用于方法。在定义泛型方法时,需要在方法名前面添加类型参数。

三,通配符是泛型中一个非常重要的概念,它可以用来表示某种类型的子类或父类。比如List<? extends Number>表示包含所有Number的子类的List,而List<? super Integer>表示包含所有Integer的父类的List。

四,泛型的应用场景非常广泛,常见的有集合类、接口和抽象类、类型安全和反射机制等等。

下面是一些使用泛型的示例代码:

泛型类

public class Box<T> {
    private T data;
    public Box(T data) {
        this.data = data;
    }
    public T getData() {
        return data;
    }
}

在上述代码中,Box是一个泛型类,其中定义了一个类型参数T,表示Box可以存储任意类型的数据。

泛型方法

public class ArrayUtil {
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.printf("%s ", element);
        }
        System.out.println();
    }
}

在上述代码中,printArray()是一个泛型方法,其中定义了一个类型参数T,表示该方法可以处理任意类型的数组。

通配符

public class Animal {}
public class Dog extends Animal {}

List<? extends Animal> list1 = new ArrayList<Dog>(); // 子类向父类转换
List<? super Dog> list2 = new ArrayList<Animal>(); // 父类向子类转换

在上述代码中,list1表示包含所有Animal的子类的List,可以接收Dog类型的List;list2表示包含所有Dog的父类的List,可以接收Animal类型的List。这样就可以实现子类向父类转换和父类向子类转换。

泛型接口

public interface Comparable<T> {
    int compareTo(T o);
}

在上述代码中,Comparable是一个泛型接口,其中定义了一个类型参数T,表示Comparable可以比较任意类型的对象。

泛型枚举

public enum Color {RED, GREEN, BLUE}
public enum Size {SMALL, MEDIUM, LARGE}

public class Shirt<T extends Enum<T>> {
    private T color;
    private T size;
    public Shirt(T color, T size) {
        this.color = color;
        this.size = size;
    }
    public T getColor() {
        return color;
    }
    public T getSize() {
        return size;
    }
}

在上述代码中,Shirt是一个泛型类,其中定义了两个类型参数T和E。T必须是一个枚举类型(如Color或Size),E必须是实现了Comparable接口的类型。这样就可以创建一个泛型枚举类,用于表示衬衫的颜色和大小。

总之,泛型是Java中非常重要的概念之一,它可以让我们编写更健壮、更灵活和更可扩展的代码。在实际开发中,我们应该熟练掌握泛型的语法和使用方法,以便更好地完成自己的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/66488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch深度学习-----现有网络模型的使用及修改(VGG16模型)

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用&#xff08;ToTensor&#xff0c;Normalize&#xff0c;Resize &#xff0c;Co…

Spring(13) IOC的工作流程

目录 一、定义二、Bean的声明方式三、IOC的工作流程 一、定义 IOC&#xff1a;全称是 Inversion Of Control&#xff0c;也就是控制反转&#xff0c;它的核心思想是把对象的管理权限交给容器。应用程序如果需要使用某个对象的实例&#xff0c;那么直接从 IOC 容器里面去获取就…

【自动化测试框架】关于unitttest你需要知道的事

一、UnitTest单元测试框架提供了那些功能 1.提供用例组织和执行 如何定义一条“测试用例”? 如何灵活地控制这些“测试用例”的执行? 2.提供丰定的断言方法 当测试用例的执行结果与预期结果不一致时&#xff0c;判定测试用例失败。在自动化测试中&#xff0c;通过“断言”…

PPT分割图片

想把一个图片拆分成很多部分改怎么做呢? 如下图所示: 图片填充法 第一步, 画一些线条, 与图片对齐: 第二步, 全选所有线条, 组合 第三步, 填充图片. 先复制图片&#xff0c;然后选中组合后的形状&#xff0c;设置形状格式&#xff0c;填充选择为图片或纹理填充&#xff0…

详细介绍渗透测试与漏洞扫描

一、概念 渗透测试&#xff1a; 渗透测试并没有一个标准的定义&#xff0c;国外一些安全组织达成共识的通用说法&#xff1b;通过模拟恶意黑客的攻击方法&#xff0c;来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动的主动分析…

Web安全——Burp Suite基础上

Burp Suite基础 一、Burp Suite安装和环境配置如何命令行启动Burp Suite 二、Burp Suite代理和浏览器设置FireFox设置 三、如何使用Burp Suite代理1、Burp Proxy基本使用2、数据拦截与控制3、可选项配置Options客户端请求消息拦截服务器端返回消息拦截服务器返回消息修改正则表…

2023.8.7论文阅读

文章目录 CMUNeXt: An Efficient Medical Image Segmentation Network based on Large Kernel and Skip Fusion摘要本文方法实验结果 Boundary Difference Over Union Loss For Medical Image Segmentation&#xff08;损失函数&#xff09;摘要本文方法实验结果 CMUNeXt: An E…

QColorDialog

QColorDialog 颜色类 QColor颜色对话框API简单的使用 QColorDialog类是QDialog的子类, 通过这个类我们可以得到一个选择颜色的对话框窗口 颜色类 QColor 关于颜色的属性信息, 在QT框架中被封装到了一个叫QColor的类中。 各种颜色都是基于红, 绿, 蓝这三种颜色调配而成的, 并…

6. CSS(三)

目录 一、盒子模型 &#xff08;一&#xff09;网页布局的本质 &#xff08;二&#xff09;盒子模型组成 &#xff08;三&#xff09;边框&#xff08;border&#xff09; &#xff08;四&#xff09;表格的细线边框 &#xff08;五&#xff09;内边距&#xff08;padding…

RISC-V走向开放服务器规范

原文&#xff1a;RISC-V Moving Toward Open Server Specification 作者&#xff1a;Agam Shah 转载自&#xff1a;https://www.hpcwire.com/2023/07/24/risc-v-moving-toward-open-server-specification/ 中文翻译&#xff1a; 2023年7月24日 RISC-V International目前正…

适配器模式(C++)

定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 在软件系统中&#xff0c;由于应用环境的变化&#xff0c;常常需要将“一些现存的对象 ”放在新的环境中应用&#xff0c;但是新环境要求…

源码分析——ConcurrentHashMap源码+底层数据结构分析

文章目录 1. ConcurrentHashMap 1.71. 存储结构2. 初始化3. put4. 扩容 rehash5. get 2. ConcurrentHashMap 1.81. 存储结构2. 初始化 initTable3. put4. get 3. 总结 1. ConcurrentHashMap 1.7 1. 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图&#xff0c;Concurr…

构建IT项目价值管理体系︱陆金所控股有限公司项目管理专家朱磊

陆金所控股有限公司项目管理专家朱磊先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;陆控-构建IT项目价值管理体系。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; IT资源有限&#xff0c;…

(八)穿越多媒体奇境:探索Streamlit的图像、音频与视频魔法

文章目录 1 前言2 st.image&#xff1a;嵌入图像内容2.1 图像展示与描述2.2 调整图像尺寸2.3 使用本地文件或URL 3 st.audio&#xff1a;嵌入音频内容3.1 播放音频文件3.2 生成音频数据播放 4 st.video&#xff1a;嵌入视频内容4.1 播放视频文件4.2 嵌入在线视频 5 结语&#x…

二、MySql库的操作

文章目录 一、库的操作&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建数据库案例&#xff08;三&#xff09;字符集和校验规则1、 查看系统默认字符集以及校验规则2、查看数据库支持的字符集3、查看数据库支持的字符集校验规则4、校验规则对数据库的影响…

20230809在WIN10下使用python3批量将TXT文件转换为SRT文件

20230809在WIN10下使用python3批量将TXT文件转换为SRT文件 2023/8/9 17:30 由于喜欢看纪录片等外文视频&#xff0c;通过剪映/PR2023/AUTOSUB识别字幕之后&#xff0c;可以通过google翻译识别为简体中文的DOCX文档。 DOCX文档转换为TXT文档之后&#xff0c;还需要转换为SRT文档…

12v转5v降压模块

问&#xff1a;什么是12V转5V降压模块&#xff1f;它的功能是什么&#xff1f; 答&#xff1a;12V转5V降压模块是一种电子设备&#xff0c;用于将输入电压为12V的直流电转换为输出电压为5V的直流电。它的主要功能是为电子设备提供所需的适当电压&#xff0c;以便它们能够正常运…

PCB制造中铜厚度的重要性

电子产品中的PCB是现代电子设备中不可或缺的一部分。在PCB制造过程中&#xff0c;铜厚度是一个非常重要的因素。正确的铜厚度可以保证电路板的质量和性能&#xff0c;同时也影响着电子产品的可靠性和稳定性。 一般我们常见的铜厚有17.5um&#xff08;0.5oz&#xff09;&#x…

最大子数组和【力扣53】

一、解题思路 Max[i]表示&#xff1a;以nums[i]为开头的所有连续子数组和的最大值。 由此可以推出Max[i-1]和Max[i]的关系&#xff1a; 若Max[i]>0&#xff1a;Max[i-1]nums[i-1]Max[i]&#xff1b; 否则&#xff1a;Max[i-1]nums[i-1]&#xff1b; 则ansMAX&#xff0…

纯跟踪(Pure Pursuit)路径跟踪算法研究(1)

纯跟踪(Pure Pursuit)路径跟踪算法研究&#xff08;1&#xff09; 下午主要读了几篇论文 《自动泊车路径纯跟踪算法应用研究》 《基于纯追踪算法和樽海鞘优化算法的无人驾驶路径跟踪算法研究》 《基于自适应PP和MPC的智能车辆路径跟踪控制》 首先在公式推导方面还不是很清晰 最…