从String到ArrayList<>:学生管理系统(致敬三个月没有学习的自己)

发布于:2023-01-04 ⋅ 阅读:(347) ⋅ 点赞:(0)

一、字符串

1.1 API

API(Application Programming Interface):应用程序编程接口

Java API :指JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关 心这些类是如何实现的,只需要学习这些类如何使用即可。

调用方法的时候,如果方法有明确的返回值,我们用变量接收,可以手动完成,也可以使用快捷键的方式完成(Ctrl+Alt+V)。

1.2 String

String类在java.lang包下,所以在使用时不需要导包。

String类代表字符串,java程序中的所有字符串文字(例如:“abc")都被实现为此类的实例,也就是说,在java程序中所有的双引号字符串,都是String类的对象。

字符串不可变,他们的值在创建后不能被更改。虽然String的值不可改变,但可以被共享。字符串效果上相当于字符数组(char[ ]),但是底层原理时字节数组(byte[ ])。

1.3 String构造方法

方法名 说明
public String() 创建一个空白字符串对象,不含有任何内容
public String(char[] chs) 根据字符数组的内容,来创建字符串对象
public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
String s = "abc"; 直接赋值的方式创建字符串对象,内容就是abc

1.4 String对象的特点

通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同。以" "方式给出的字符串,只要字符序列相同(顺序和大小),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。

1.5 字符串的比较

使用==做比较:基本类型比较的是数据值是否相同;引用类型比较的是地址值是否相同。

字符串是对象,它比较内容是否相同,是通过一个方法来实现的:equals()

public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串。

public class StringCompare {
    public static void main(String[] args) {
        char[] chs={'a','b','c'};
        String s1 = new String(chs);
        String s2 = new String(chs);
        String s3 = "abc";
        String s4 = "abc";
        System.out.println(s1==s2);             //false
        System.out.println(s1==s3);             //false
        System.out.println(s3==s4);             //true
        System.out.println(s1.equals(s2));      //true
        System.out.println(s1.equals(s3));      //true
        System.out.println(s3.equals(s4));      //true

    }
}

1.6 字符串的遍历

import java.util.Scanner;

public class StringBianli {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s1=sc.nextLine();
        for(int i=0;i<s1.length();i++){
            System.out.println(s1.charAt(i));
        }
    }
}

1.7字符串拼接

1.public class HelloWorld {
    public static void main(String[] args) {
       int [] arr={1,2,3};
        String s=ConnectString(arr);
        System.out.println(s);
    }

public static String ConnectString(int[] arr) {
        String s="";
        s +="[";
        for (int i=0;i<arr.length;i++){
            if(i==arr.length-1){
                s+=arr[i];
            }else{
                s+=arr[i];
                s+=", ";
            }
        }
        s+="]";
        return s;
    }
}
2.public class HelloWorld {{
    public static void main(String[] args) {
        int [] arr={1,2,3};
        String ss=Connect(arr);
        System.out.println(ss);
    }
    public static String Connect(int[] a){
        StringBuilder sb= new StringBuilder();
        sb.append("[");
        for(int i=0;i<a.length;i++){
            if(i==a.length-1){
                sb.append(a[i]);
            }else{
                sb.append(a[i]);
                sb.append(",");
            }
        }
        sb.append("]");
        String s=sb.toString();
        return s;
    }

}

1.8 字符串反转

public class HelloWorld {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入字符串:");
        String line=sc.nextLine();
        String s=reverse(line);
        System.out.println(s);
    }
    public static String reverse(String s){
        String ss="";
        for(int i=s.length()-1;i>=0;i--){
            ss+=s.charAt(i);
        }
        return ss;
    }
}

2.StringBuilder

2.1区别:String内容是不可变的,StringBuilder内容是可变的

2.2 构造方法

方法名 说明
public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str) 根据字符串内容来创建可变字符串对象

2.3StringBuilder的添加和反转方法

方法名 说明
public StringBuilder append(任意类型) 添加数据,并返回对象本身
public StringBuilder reverse() 返回相反的字符序列 
public class HelloWorld {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("hello").append("world").append(1016);
        System.out.println("sb:"+sb);
        sb.reverse();
        System.out.println("sb:"+sb);
    }
}

输出:
sb:helloworld1016
sb:6101dlrowolleh

3.3StringBuilder和String相互转换

StringBuilder转换为String:public String toString()

String转换为StringBuilder:public StringBuilder(String s)

public class HelloWorld {
    public static void main(String[] args) {
//StringBuilder转换为String
        StringBuilder sb = new StringBuilder();
        sb.append("hello");
        String s=sb.toString();
        System.out.println(s);
//String转换为StringBuilder
        String s="hello";
        StringBuilder sb=new StringBuilder(s);
        System.out.println(sb);
    }
}

二、集合基础

1.概述:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

 ArrayList<E>:ArrayList<String>,ArrayList<Student>,在出现E的地方使用引用数据类型替换

2.ArrayList构造方法和添加方法

方法名

说明
public ArrayList() 创建一个空的集合对象
public boolean add(E e) 将指定元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素
import java.util.ArrayList;

public class HelloWorld {
    public static void main(String[] args) {
        ArrayList<String > array = new ArrayList<>();//创建一个空的集合对象
        array.add("hello");
        array.add("world");//添加指定元素至集合末尾
        array.add(1,"hi");//添加指定元素至集合指定位置
    }
}

3.ArrayList集合常用方法

方法名 说明
public boolean remove(Object o) 删除指定元素,返回删除是否成功
public E remove(int index) 删除指定索引处的元素,返回被删除元素

public E set(int index,E element)

修改指定索引处的元素,返回被修改元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中的元素的个数
import java.util.ArrayList;

public class HelloWorld {
    public static void main(String[] args) {
        ArrayList<String > array = new ArrayList<>();//创建一个空的集合对象
        array.add("hello");
        array.add("world");//添加指定元素至集合末尾
        array.add(1,"hi");//添加指定元素至集合指定位置
        //System.out.println(array.remove("hi"));//删除指定元素,返回删除是否成功,返回true
        //System.out.println(array.remove("haha"));//返回false
        //System.out.println(array.remove(1));//删除指定索引处的元素,返回被删除元素,即返回hi
        //System.out.println(array.set(1,"yeah"));//将1索引位置元素改为yeah,返回修改前元素hi
        //System.out.println(array.get(2));//返回指定索引处元素
        //System.out.println(array.size());//返回集合中的元素个数
        System.out.println("array:"+array);
    }
}

4.案例

4.1ArrayList存储字符串并遍历

import java.util.ArrayList;

public class HelloWorld {
    public static void main(String[] args) {
        ArrayList<String> array  = new ArrayList<>();
        array.add("Pig");
        array.add("Cat");
        array.add("Dog");
        for(int i=0;i<array.size();i++){
            String s = array.get(i);
            System.out.println(s);
        }
    }
}

4.2存储学生对象并遍历

//学生类
public class Student {
    private String name;
    private int age;

    public Student(){}

    public Student(String name,int age){
        this.name = name ;
        this.age = age ;
    }
    public void setName(String name){
        this.name = name ;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
}
1.存储
import java.util.ArrayList;

public class HelloWorld {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<Student>();

        //创建学生对象
        Student s1 = new Student("陈尤里",8);
        Student s2 = new Student("陈猪猪",18);
        Student s3 = new Student("陈大狗",21);

        //添加学生对象到集合中
        array.add(s1);
        array.add(s2);
        array.add(s3);

        //遍历集合,采用通用遍历格式
        for(int i=0;i<array.size();i++){
            Student s = array.get(i);
            System.out.println(s.getName()+","+s.getAge());
        }
    }
}
2.键盘录入
mport java.util.ArrayList;
import java.util.Scanner;


public class HelloWorld {
    public static void main(String[] args) {
        ArrayList<Student> array = new ArrayList<>();
        addStudent(array);
        addStudent(array);
        addStudent(array);
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }

    public static void addStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.println("请输入学生年龄:");
        String age = sc.nextLine();
        Student s = new Student();
        s.setName(name);
        s.setAge(age);
        array.add(s);
    }
}

4.3学生管理系统

//定义学生类
public class Student {
    private String sid;
    private String name;
    private String age;
    private String address;

    public Student(){}
    public Student(String sid,String name,String age,String address){
        this.sid=sid;
        this.name = name ;
        this.age = age ;
        this.address=address;
    }
    public void setSid(String sid){
        this.sid = sid ;
    }
    public String getSid(){
        return sid;
    }
    public void setName(String name){
        this.name = name ;
    }
    public String getName(){
        return name;
    }
    public void setAge(String age){
        this.age=age;
    }
    public String getAge(){
        return age;
    }
    public void setAddress(String address){
        this.address = address ;
    }
    public String getAddress(){
        return address;
    }
}
//学生管理系统
import java.util.ArrayList;
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        ArrayList<Student> array = new ArrayList<>();
        while (true) {
            System.out.println("---------------欢迎来到学生管理系统---------------");
            System.out.println("1.添加学生");
            System.out.println("2.删除学生");
            System.out.println("3.修改学生");
            System.out.println("4.查看所有学生");
            System.out.println("5.退出");
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你的选择:");
            String line = sc.nextLine();
            switch (line) {
                case "1":
                    System.out.println("1.添加学生");
                    addStudent(array);
                    break;
                case "2":
                    System.out.println("2.删除学生");
                    deleteStudent(array);
                    break;
                case "3":
                    System.out.println("3.修改学生");
                    updateStudent(array);
                    break;
                case "4":
                    System.out.println("4.查看所有学生");
                    findAllStudent(array);
                    break;
                case "5":
                    System.out.println("谢谢使用");
                    System.exit(0);//JVM退出
            }
        }
    }

    public static void addStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);
        String sid;
        while (true) {
            System.out.print("请输入学号:");
            sid = sc.nextLine();
            boolean flag = isUsed(array, sid);
            if (flag) {
                System.out.println("你输入的学号已经被占用,请重新输入");
            } else {
                break;
            }
        }
        System.out.print("请输入姓名:");
        String name = sc.nextLine();
        System.out.print("请输入年龄:");
        String age = sc.nextLine();
        System.out.print("请输入住址:");
        String address = sc.nextLine();
        Student s = new Student();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        array.add(s);
        System.out.println("添加成功");
    }

    public static void deleteStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入要删除学生的学号:");
        String sid = sc.nextLine();
        int index = -1;
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            if (s.getSid().equals(sid)) {
                index = i;
                break;
            }
        }
        if (index == -1) {
            System.out.println("该信息不存在,请重新输入");
        } else {
            array.remove(index);
            System.out.println("删除成功");
        }
    }

    public static void updateStudent(ArrayList<Student> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要修改的学生学号:");
        String sid = sc.nextLine();
        int index = -1;
        for (int i = 0; i < array.size(); i++) {
            Student student = array.get(i);
            if (student.getSid().equals(sid)) {
                index = i;
                break;
            }
        }
        if (index == -1) {
            System.out.println("该信息不存在,请重新输入");
        } else {
            System.out.println("请输入你要修改的学生新姓名:");
            String name = sc.nextLine();
            System.out.println("请输入你要修改的学生新年龄:");
            String age = sc.nextLine();
            System.out.println("请输入你要修改的学生新住址:");
            String address = sc.nextLine();
            Student s = new Student();
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            array.set(index, s);
            System.out.println("修改成功");
        }
    }

    public static void findAllStudent(ArrayList<Student> array) {
        if (array.size() == 0) {
            System.out.println("无信息,请先添加信息再查询");
            return;
        }
        System.out.println("学号\t\t\t姓名\t\t年龄\t\t住址");
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getSid() + "\t\t" + s.getName() + "\t" + s.getAge() + "岁\t" + s.getAddress());
        }
    }
    public static boolean   isUsed(ArrayList<Student> array,String sid){
        boolean flag = false;
        for(int i=0;i<array.size();i++){
            Student s = array.get(i);
            if(s.getSid().equals(sid)){
                flag=true;
                break;
            }
        }
        return flag;
    }
}

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到