Java复习02

3 篇文章 0 订阅
字符串
  1. API

    1. API概述

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

      Java API: 指的就是JDK中提供的各种功能的Java类

      ​ 这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何 即可,我们可以通过帮助文档案来学习这些API如何使用。

    2. 如何使用帮助文档

      1. 右键打开该文档

      在这里插入图片描述

      1. 找到所有选项卡中的输入框
        在这里插入图片描述

      2. 在输入框中输入查找对象,如Random

      在这里插入图片描述

      1. 看类在哪个包下

      在这里插入图片描述

      1. 看类的描述信息

      在这里插入图片描述

      1. 看构造方法

      在这里插入图片描述

      1. 看成员方法

      在这里插入图片描述

  2. String

    1. String 概述

      String类在Java.lang包下,所以使用的时候不需要导包

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

      字符串的特点

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

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

      1. 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址不同

           char[] chs = {'a', 'b', 'c'};
                String s1 = new String(chs);
                String s2 = new String(chs);
        

        上面的代码中JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新地址,只不过s1和s2操控的字符串内容是相同的

      2. 以“”方式给出的字符串,只要字符串序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会创建一个String对象,并在字符串池中维护

         		String s3 = "abc";
                String S4 = "abc";
        

        在上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;第二行则让s4直接参考字符串池中的String对象,也就是说他们本质上是同一个对象。

    4. 字符串的比较

      使用 == 作比较

      • 基本类型:比较的是数据值是否相同
      • 引用类型:比较的是地址值是否相同

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

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

        package heima02;
        
        import java.sql.SQLOutput;
        
        public class StringDemo {
            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 == s1);
                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));
            }
        }
        
        
        true
        false
        true
        ------------------
        true
        true
        true
        
        Process finished with exit code 0
        
    5. 通过帮助文档查看String中的方法

      方法名说明
      public boolean equals(Object anObject)比较字符串的内容,严格区分大小写(用户名和密码)
      public char charAt(int index)返回指定索引出的char值
      public int length()返回此字符串的长度
  3. StringBuilder

    1. StringBuilder概述

      如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时又浪费内存空间,而这种操作还不可避免。我们可以通过Java提供的StringBuilder类来解决这个问题。

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

    2. String和StringBuilder的区别:

      • String 内容是不可变的
      • StringBuilder 内容是可变的
    3. StringBuilder构造方法

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

      方法名说明
      public StringBuilder append(任意类型)添加数据,并返回对象本身
      public StringBuilder reverse()返回相反的字符序列
      package heima02;
      
      import java.sql.SQLOutput;
      
      public class StringDemo {
          public static void main(String[] args) {
              //创建对象
              StringBuilder sb = new StringBuilder();
              //public StringBuilder append(任意类型):添加数据,并返回对象本身
              StringBuilder sb2 = sb.append("hello");
      
              System.out.println("sb:" + sb);
              System.out.println("sb2:" + sb2);
              System.out.println(sb == sb2);
      
              sb.append("hello");
              sb.append("world");
              sb.append("java");
              sb.append(100);
          }
      }
      
      
        //链式编程
              sb.append("hello").append("world").append("java").append(100);
              System.out.println("sb:"+sb);
      
              //public StringBuilder reverse():返回相反的字符序列
              sb.reverse();
              System.out.println("sb:"+sb);
      
    5. StringBuilder 和 String 相互转换

      1. String Builder转换为String

        public String toString(): 通过toString()就可以实现把StringBuilder 转换为String

      2. String转换为StringBuilder

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

        //创建对象
                StringBuilder sb = new StringBuilder();
                sb.append("hello");
                //String s=sb; //这个是错误的做法
                //public String toString(): 通过toString()就可以实现把StringBuilder 转换为String
                String s=sb.toString();
                System.out.println(s);
        	//String转换为StringBuilder
                String s="hello";
                //StringBuilder sb=s;//这个是错误的做法
                //public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder
                StringBuilder sb=new StringBuilder(s);
                System.out.println(sb);
        

        案例:定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法以后在控制台输出结果

        ​ 例如,键盘录入abc,输出结果cba

        package heima02;
        
        import java.sql.SQLOutput;
        import java.util.Scanner;
        
        public class StringDemo {
            public static void main(String[] args) {
                //键盘录入一个字符串,用Scanner实现
                Scanner sc = new Scanner(System.in);
        
                System.out.println("请输入一个字符串");
                String line = sc.nextLine();
                String s = myReverse(line);
                System.out.println("s:" + s);
            }
        
            //定义一个方法,实现字符串反转。返回值类型String,参数String s
            /*
                两个明确:
                    返回值类型:String
                    参数:String s
             */
            public static String myReverse(String s) {
                /*StringBuilder sb=new StringBuilder(s);
                sb.reverse();
                String ss=sb.toString();
                return ss;*/
        
                return new StringBuilder(s).reverse().toString();
            }
        }
        
        
集合基础
  1. ​ 集合基础

    1. 集合概述

      集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发送改变

      集合类有很多,目前我们先学习一个:ArrayList

      ArrayList:

      • 可以调整大小的数组实现
      • :是一种特殊的数据类型,泛型
  2. ArrayLIst 构造方法和添加方法

    方法名说明
    public ArrayList()创建一个空的集合对象
    public boolean add(E e)将指定的元素追加到此集合的末尾
    public void add(int index,E element)在此集合中的指定位置插入指定的元素
    package heima03;
    
    import java.util.ArrayList;
    
    public class ArrayListDemo {
        public static void main(String[] args) {
    //        public ArrayList():创建一个空的集合对象
            ArrayList<String> array = new ArrayList<String>();
    //        public boolean add(E,e):在此集合中的指定位置插入指定的元素
    //        System.out.println(array.add("hello"));
    
            array.add("hello");
            array.add("world");
            array.add("java");
    
    //        public void add(int index,E element):在此集合中的指定位置插入指定的元素
            array.add(1, "javase");
    //        array.add(3,"javase");
            System.out.println("array:" + array);
    
        }
    }
    
    
  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()返回集合中元素的个数
    package heima03;
    
    import java.util.ArrayList;
    
    public class ArrayListDemo {
        public static void main(String[] args) {
    //        public ArrayList():创建一个空的集合对象
            ArrayList<String> array = new ArrayList<String>();
             //添加元素
            array.add("hello");
            array.add("world");
            array.add("java");
    
    //       public boolean remove(Object o)删除指定的元素,返回删除是否成功
    //        System.out.println(array.remove("world"));
    //        System.out.println(array.remove("javaee"));
            //public E remove(int index)删除指定索引处的元素,返回被删除的元素
    //        System.out.println(array.remove(1));
            //public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
    //        System.out.println(array.set(1,"javaee"));
    //       public E get(int index)返回指定索引处的元素
            System.out.println(array.get(0));
            
            System.out.println();
            System.out.println("array:" + array);
    
        }
    }
    
    

    案例: 学生管理系统

    package StudentSys;
    /*
        学生类
        快捷键:Alt + insert 快速创建构造方法和get/set方法
     */
    
    public class Student {
        private String sid;
        private String name;
        private String age;
        private String address;
    
        public Student() {
        }
    
        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;
        }
    
        public Student(String sid, String name, String age, String address) {
            this.sid = sid;
            this.name = name;
            this.age = age;
            this.address = address;
        }
    }
    
    
    package StudentSys;
    
    import com.sun.org.apache.xpath.internal.SourceTree;
    import com.sun.org.apache.xpath.internal.compiler.PsuedoNames;
    
    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 (line) {
                    case "1":
    //                    System.out.println("添加学生");
                        addStudent(array);
                        break;
                    case "2":
    //                    System.out.println("删除学生");
                        deleteStudent(array);
                        break;
                    case "3":
    //                    System.out.println("修改学生");
                        updateStudent(array);
                        break;
                    case "4":
    //                    System.out.println("查看所有学生");
                        findAllStudent(array);
                        break;
                    case "5":
                        System.out.println("谢谢使用");
    //                    break;
                        System.exit(0);
                }
    
            }
    
        }
    
    
        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 = isUsed(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  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;
        }
    
        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"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
            }
        }
    
        public static void deleteStudent(ArrayList<Student> arry){
            Scanner sc = new Scanner(System.in);
    
            System.out.println("请输入你要删除的学生的学会:");
            String sid=sc.nextLine();
            int index=-1;
    
            for(int i=0;i<arry.size();i++){
                Student s = arry.get(i);
                if(s.getSid().equals(sid)){
                    index=i;
    //                arry.remove(i);
                    break;
                }
            }
            if(index ==-1) {
                System.out.println("该信息不存在,请重新输入");
            }else {arry.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("修改成功");
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值