【自学笔记】01Java基础-08Java常用API:String、ArrayList集合

记录学习Java基础中有关应用程序接口(API)的基础知识,包括两个常用类String和ArrayList类的介绍。

什么是API?

API是Application Programming Interface(应用程序编程接口)的缩写,它是一组预先定义的规则和规范,用于定义软件系统如何交互、通信或调用彼此的功能
简单理解API就是封装好可直接调用的方法。

1 String类详解

1.1 String类概述

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第1张图片
【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第2张图片

1.2 String类常用方法-创建字符串对象的两种方式

  1. 第一种,直接使用" "定义:

String s = “字符内容”;

  1. 第二种,我们已经知道String是Java封装的一个类,可以调用几个构造方法来创建String对象
    【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第3张图片
    不同方式声明String的区别?
    【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第4张图片
    【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第5张图片
    由于s1指向的是常量池中的"abc",而s2指向的是堆内存中新建的"abc"对象,所以它们指向不同的内存区域,因此输出的结果将是false。
    【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第6张图片

1.3 String类常用方法-字符串比较

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第7张图片

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第8张图片

1.5 String类常用方法-遍历、替换、截取、分割操作

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第9张图片

1.6 String类案例-生成6位验证码

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第10张图片

public class Main {
    public static void main(String[] args) {
        System.out.println(generateVerificationCode());
    }

    public static String generateVerificationCode() {
        // 定义一个字符串,包含所有可能的字符
        String allChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        StringBuilder sb = new StringBuilder();
        Random random = new Random();

        // 循环6次,随机获取一个字符并添加到StringBuilder中
        for (int i = 0; i < 6; i++) {
            int index = random.nextInt(allChar.length());
            sb.append(allChar.charAt(index));
        }

        // 返回生成的验证码
        return sb.toString();
    }
}

上述代码首先定义了一个包含所有可能字符(数字、大写字母和小写字母)的字符串allChar,然后创建了一个StringBuilder对象来构建验证码。在循环中,每次随机生成一个索引,并通过该索引从allChar中获取一个字符,将其添加到StringBuilder中。最后返回由这6个随机字符组成的验证码字符串。

2 ArrayList类详解

2.1 集合概述

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第11张图片
【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第12张图片
【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第13张图片

2.2 ArrayList集合快速了解

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第14张图片

2.3 泛型概述

泛型(Generics)是一种编程语言特性,允许在定义类、接口和方法时使用类型参数(Type Parameters),这些类型参数在编译时可以被实际的类型所替换。通过这种方式,程序员可以在编写代码时推迟指定具体的数据类型,从而创建可重用性强、类型安全的代码组件。

例如,在Java中可以定义一个泛型类:

public class MyGenericClass<T> {//声明时使用T表示未知类型
    private T value;

    public void setValue(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }
}

// 使用该泛型类
MyGenericClass<String> stringBox = new MyGenericClass<>();
stringBox.setValue("Hello");
String s = stringBox.getValue(); // 返回 "Hello"

在这个例子中,T 是一个类型参数,代表某种未知的类型。当实例化 MyGenericClass 时,我们可以将 T 替换为具体的类型,如 String。这样,setValuegetValue 方法就能保证操作的是同一类型的对象,提高了类型安全性。

同样地,泛型也可以应用于接口、方法以及容器类,比如Java中的 ListMap 等。

  • ArrayList< String > :此集合只能操作字符串类型的元素。
  • ArrayList< Integer >:此集合只能操作整数类型的元素。
    注意:泛型只能支持引用数据类型,不支持基本数据类型。

2.4 ArrayList集合常用方法

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第15张图片

2.5 ArrayList集合案例:遍历并删除元素

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第16张图片
由于在遍历过程中修改了集合长度,所以需要从后往前遍历以避免“并发修改异常”(漏掉未检)。

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<Integer> scores = new ArrayList<>();
        //往ArrayList对象scores中添加数值
        scores.add(98);
        scores.add(77);
        scores.add(66);
        scores.add(89);
        scores.add(79);
        scores.add(50);
        scores.add(100);

        // 从后往前遍历,遇到低于80分的成绩就删除
        for (int i = scores.size() - 1; i >= 0; i--) {
            if (scores.get(i) < 80) {
                scores.remove(i);
            }
        }

        // 打印过滤后的成绩
        for (int score : scores) {
            System.out.println(score);
        }
    }
}

这样做的缺点是效率相对较低,因为每次删除元素后,列表后面的元素都需要向前移动一位。当需求中数据量较小,这种影响可以忽略不计。对于大量数据的处理,建议采用迭代器或Stream API的方式进行操作。

2.6 ArrayList集合案例:存储自定义类型的对象

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第17张图片
【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第18张图片
结论:集合中存储的元素并不是对象本身,而是对象的地址。

2.7 ArrayList集合案例:元素搜索

【自学笔记】01Java基础-08Java常用API:String、ArrayList集合_第19张图片
首先创建Student实体类:

public class Student {
    private int stuNum;//学号
    private String stuName;//姓名
    private int age;//年龄
    private String stuClass;//班级

    public Student(int stuNum, String stuName, int age, String stuClass) {
        this.stuNum = stuNum;
        this.stuName = stuName;
        this.age = age;
        this.stuClass = stuClass;
    }

    // Getter and Setter 方法
    public int getStuNum() {
        return stuNum;
    }

    public void setStuNum(int stuNum) {
        this.stuNum = stuNum;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getStuClass() {
        return stuClass;
    }

    public void setStuClass(String stuClass) {
        this.stuClass = stuClass;
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuNum=" + stuNum +
                ", stuName='" + stuName + '\'' +
                ", age=" + age +
                ", stuClass='" + stuClass + '\'' +
                '}';
    }
}

接下来是基于ArrayList实现存储、展示学生信息和搜索功能的后台程序:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();

        // 添加学生信息
        students.add(new Student(114514, "张三", 20, "软件工程1班"));
        students.add(new Student(114214, "李四", 21, "软件工程2班"));
        // ... 其他学生信息

        // 展示所有学生信息
        for (Student student : students) {
            System.out.println(student);
        }

        Scanner scanner = new Scanner(System.in);

        while (true) {  // 使用死循环让用户可以不停搜索
            System.out.println("\n请输入要搜索的学生学号:");
            int searchId = scanner.nextInt();
            scanner.nextLine();  // 消耗换行符

            Student foundStudent = searchById(students, searchId);
            if (foundStudent != null) {
                System.out.println("找到的学生信息:");
                System.out.println(foundStudent);
            } else {
                System.out.println("未找到对应学号的学生信息!");
            }
        }
    }

    // 定义按学号搜索学生的函数
    public static Student searchById(ArrayList<Student> students, int id) {
        for (Student student : students) {
            if (student.getStuNum() == id) {
                return student;
            }
        }
        return null;  // 如果没有找到,则返回null
    }
}

你可能感兴趣的:(自学笔记,笔记,java,开发语言)