黑马程序员-java教程 代码笔记

学习时间:

2022 /7/2 - 7/3 七月第一个周末


学习目标:

视频p115-p149;

1.字符串

2.集合基础;

3.学生管理系统;


学习内容:

目录

         1.String

1.String

    String概述​编辑

    String构造方法

    String对象特点​编辑new会开辟新内存,直接赋值 如果两个值一样内存位置也一样

    字符串比较​编辑

  用户登录

  遍历字符串

  统计字符次数

   拼接字符串

2.StringBuilder

StringBuilder概述 ​编辑

StringBuilder构造方法​编辑

StringBuilder 和String相互转换

案例:

2.集合基础

集合概述

ArrayList的构造方法和添加方法

ArrayList的常用方法​编辑

案例

学生管理系统



1.String

1.String

  •     String概述

  •     String构造方法

    //string构造方法:
    //public String(),创建一个空白字符串对象,不含有任何内容;
    //public String(char[] chs),根据字符串数组的内容,来创建字符串对象。
    //public Strinf(byte[] bys),根据字节数组内容,来创建字符串对象。
    //String s=“abc”;直接赋值的方法创建字符串对象,内容就是abc;
    
    //推荐直接赋值的方法得到字符串对象
    
    public class String_01 {
        public static void main(String[] args) {
            //public String(),创建一个空白字符串对象,不含有任何内容;
            String s1 = new String();
            System.out.println("s1"+s1);
    
            //public String(char[] chs),根据字符串数组的内容,来创建字符串对象。
            char[] chs={'a','b','c'};
            String s2=new String(chs);
            System.out.println("s2"+s2);
    
            //public Strinf(byte[] bys),根据字节数组内容,来创建字符串对象。
            byte[] bys={97,98,99};
            String s3 = new String(bys);
            System.out.println("s3"+s3);
    
            //String s=“abc”;直接赋值的方法创建字符串对象,内容就是abc;
            String s4="abc";
            System.out.println("s4"+s4);
    
        }
    }
  •     String对象特点new会开辟新内存,直接赋值 如果两个值一样内存位置也一样

  •     字符串比较

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

     

 案例

  •   用户登录

    import java.util.Scanner;
    //需求:已知用户名和密码,请用程序实现模拟用户登录,总共给三次机会,登陆之后,给出相应提示。
    public class Lojinn{
        public static void main(String[] args) {
    
    
            String username = "susu";
            String passport = "123";
        for(int i = 1;i <= 3;i++){
                Scanner sc = new Scanner(System.in);
    
                System.out.println("请输入用户名:");
                String name=sc.nextLine();
    
                System.out.println("请输入密码:");
                String port= sc.nextLine();
    
                if((name.equals(username)) && (port.equals(passport)))
                {
                    System.out.println("登陆成功");
                    break;
                }else{
                if(2-i==0)
                {
                    System.out.println("登陆失败,账号锁定。");
                }else{
                    System.out.println("登陆失败,你还有"+(2-i)+"次机会");
                }
            }
            }
        }
     }

  •   遍历字符串

    import java.util.Scanner;
    //字符串的索引也是从0开始的、
    public class zhifuchuan {
        public static void main(String[] args) {
            //键盘录入一个字符串,用Scanner实现;
            Scanner sc=new Scanner(System.in);
    
            System.out.printf("请输入一个字符串:");
            String line= sc.nextLine();
    
            for(int i=0;i<line.length();i++)
            {
                System.out.println(line.charAt(i));
            }
        }
    }

  1.   统计字符次数

    import java.util.Scanner;
    //需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符字符出现的次数
    //判断遍历到的字符属于那种类型,然后对应类型变量的统计+1。
    public class accuse {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
    
            System.out.printf("请输入一个字符串");
            String line=sc.nextLine();
    
            int bigCount=0;
            int smallCount=0;
            int numberCount=0;
    
            for(int i=0;i<line.length();i++)
            {
                char ch=line.charAt(i);
    
                if(ch>'A'&&ch<'Z')
                {
                    bigCount++;
                }else if(ch>'a'&&ch<'z')
                {
                    smallCount++;
    
                }else if (ch>'0'&&ch<'9')
                {
                    numberCount++;
                }
            }
    
            System.out.println("大写字母:"+bigCount+"个");
            System.out.println("小写字母:"+smallCount+"个");
            System.out.println("数字:"+numberCount+"个");
    
        }
    }

  •    拼接字符串

    //要求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符出返回,
    //调用方法,并在控制台输出结果。例如,数组为int[]arr={1,2,3};执行后输出结果为[1, 2,3]'
    
    public class stick {
        public static void main(String[] args) {
            int[] arr={1,2,3};
    
            String s=arrayToString(arr);
            System.out.println("s:"+ s);
        }
    
        public static String arrayToString(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;
    
        }
    }
  •  字符串反转
    import java.util.Scanner;
    //定义一个方法,实现字符串反转。
    public class reverses {
        public static void main(String[] args) {
            Scanner sc= new Scanner(System.in);
            System.out.printf("请输入一个字符串:");
            String line=sc.nextLine();
    
            String s=reverse(line);
            System.out.println("s:"+ 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

  • StringBuilder概述 

    如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。

    StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器
    这里的可变指的是StringBuilder对象中的内容是可变的

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

  • StringBuilder构造方法

  • StringBuilder 和String相互转换

 1.StringBuilder转换为String
publicString toString():  通过 toString()就可以实现把StringBuilder转换为String
2.String转换为StringBuilder
public StringBuilder(String s):  通过构造方法就可以实现把String转换为StringBuilder

案例:

1.字符串拼接升级版

public class stickUp {
    public static void main(String[] args) {
        int[] arr={1,2,3};

        String s=arrayToString(arr);
        System.out.println("s:"+s);
    }

    public static String arrayToString(int[] arr){
        StringBuilder sb=new StringBuilder();

        sb.append("[");
        for(int i=0;i<arr.length;i++)
        {
            if(i== arr.length-1)
            {
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
        String s= sb.toString();
        return s;
    }
}

2.字符串反转升级版

public class reverseUp {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();
        String s=myReserve(line);
        System.out.println("s:"+s);
    }
    

    public static String myReserve(String s) {
     /* StringBuilder sb=new StringBuilder(s);
        sb.reverse();
        String ss=sb.toString();
        return ss;*/

        return new StringBuilder(s).reverse().toString();
    }
}

2.集合基础

  1. 集合概述

    集合类的特点:提供一种存储空问可变的存储模型,存储的数据容量可以发生改变集合类有很多,目前我们先学习一个: ArrayList

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

    /*
    ArrayList的构造方法:
    public ArrayList():创建一个空的集合对象。
    ArrayList的添加方法:
    public boolean add(E e):将指定元素追加到此集合的末尾。
    public void add(index, E elemen):在此集合的指定位置插入指定元素。
    
    */
    public class FundnAdd {
        public static void main(String[] args) {
            ArrayList<String> array=new ArrayList<String>();
    
         //   System.out.println(array.add("hello"));
    
            array.add("hello");
            array.add("world");
            array.add("java");
    
            array.add(1,"wuhu");
            
            System.out.println("array:"+array);
        }
    }

    第二种在指定位置添加方法时,如果是中间部分,那数组中的元素依次后移;如果在末尾位置,那么直接补到结尾,如果超过结尾,比如本来0-2,插入到4位置,越界,会报错。

  3. ArrayList的常用方法

     remove&set&get:如果删除越界处的元素,会报错。

  4. 案例

  • 1.储存字符串
    //需求:创建一个储存字符串的集合,存储3个字符串元素,实用程序在控制台遍历该集合。
    public class chuncu {
        public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> array =new ArrayList<String>();
        //在集合中添加字符串对象
        array.add("liu");
        array.add("zuo");
        array.add("feng");
        //遍历集合。通过get(int index)实现。
    /*        System.out.println(array.get(0));
            System.out.println(array.get(1));
            System.out.println(array.get(2));*/
    
        //遍历集合,其次要获得到集合的长度,用size()方法实现。
            for(int i=0;i<array.size();i++)
            {
                String s=array.get(i);
                System.out.println(s);
            }
    }
    }

  • 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 void setAge(int age)
        {
            this.age=age;
        }
        public String getName()
        {
            return name;
        }
        public int getAge()
        {
            return age;
        }
    }
    
    //需求:创建一个存储学生对象的集合,存储三个学生对象,使用程序实现在控制台遍历改集合。
    public class cunStudents {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<Student> array=new ArrayList<Student>();
            //创建学生对象
            Student s1=new Student("小明",15);
            Student s2=new Student("小娜",16);
            Student s3=new Student("小英",14);
            //添加学生对象到集合中
            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());
            }
        }
    }
    

  • 学生管理系统

  • 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 String getSid() {
            return sid;
        }
    
        public void setSid(String sid) {
            this.sid = sid;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }

    上面是学生类;下面是主界面。                                                                                               利用Alt + Ins 可以快速设置set和get方法。

    import java.sql.SQLOutput;
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class StudentManager {
    
        public static void main(String[] args) {
            ArrayList<Student> array=new ArrayList<Student>();
    
            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 退出");
                System.out.println("请输入你的选择:");
    
                Scanner sc = new Scanner(System.in);
                String line = sc.nextLine();
    
                //用switch语句完成操作的选择
                switch (line) {
                    case "1":
                       addStudent(array);
                        break;
                    case "2":
                        updateStudent(array);
                        break;
                    case "3":
                        deleteStudent(array);
                        break;
                    case "4":
                        findStudent(array);
                        break;
                    case "5":
                        System.out.println("谢谢使用");
                        break;
                }
    
            }
        }
    
        public static void addStudent(ArrayList<Student> array) {
            Scanner sc=new Scanner(System.in);
            String sid;
            while(true) {
                System.out.println("请输入学生学号:");
                sid = sc.nextLine();
    
                boolean flag = isUsing(array, sid);
                if (flag) {
                    System.out.println("该学号已被使用,请重新输入");
                }else
                {
                    break;
                }
            }
            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.add(s);
    
            System.out.println("添加学生成功");
    
        }
    
        public static void findStudent(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);
            }
    
        }
    
        public static void deleteStudent(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 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();
    
            //键盘录入要修改的学生信息
            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);
    
            //遍历集合修改对应的学生信息
            for(int i=0;i<array.size();i++)
            {
                Student student=array.get(i);
                if(student.getSid().equals(sid))
                {
                    array.set(i,s);
                    break;
                }
            }
            System.out.println("修改学生信息成功!");
        }
    
        public static boolean isUsing(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;
        }
    
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值