栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

自学java笔记2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自学java笔记2

文章目录
  • 一.集合
    • 集合概述
    • list
      • ArrayList< E >
        • 概述:
        • 用法:
    • map
      • HashMap
        • 概述:
        • 用法:
    • set
      • HashSet
        • 概述:
        • 用法:
      • Treeset
        • 概述:
        • 用法:
  • 二.常用类
    • 1.Object
      • 概述:
      • 常用方法:
    • 2.String
      • 概述:
      • 用法:
    • 3.StringBuilder
      • 概述:
      • 用法:
    • 4.StringBuffer
      • 概述:
      • 用法:
      • 思考:
    • 5.System
      • 概述:
      • 常用方法:
    • 6.Data
      • 概述:
      • 用法:

一.集合 集合概述
  1. 什么是集合:由若干个确定的元素所构成的整体,在Java中,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合。
  2. 为什么引入集合:为了便于处理一组类似的数据
list ArrayList< E > 概述:

一种可调整大小的数组,其中< E >是一种特殊的数据类型——泛型

用法:
  1. 构造方法:

    ArrayList arrayList = new ArrayList<>();
     
  2. 常用方法:

    //添加元素到集合末尾
    arrayList.add("hujiing");
    //添加元素到指定索引处
    arrayList.add(0,"21130124");
    //删除指定元素,返回是否删除成功
    System.out.println(arrayList.remove("21130124"));
    //删除指定索引处的元素,返回被删除的元素
    System.out.println(arrayList.remove(0));
    //修改指定索引处的元素,返回被修改的元素
    System.out.println(arrayList.set(0,"666"));
    //返回指定索引处的元素
    System.out.println(arrayList.get(1));
    //返回集合长度
    System.out.println(arrayList.size());
    
  3. 实例:存储学生对象并遍历

    public class Student {
        private String name;
        private String age;
    
        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 class Main {
        public static void main(String[] args) {
            ArrayList arrayList = new ArrayList<>();
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入学生个数:");
            int n= scanner.nextInt();
            for (int i = 0; i < n; i++) {
                addStudent(arrayList);
            }
            for (Student s : arrayList) {
                System.out.println("姓名:"+s.getName() + ",年龄:" + s.getAge());
            }
        }
        public static void addStudent(ArrayList arrayList){
            Scanner scanner = new Scanner(System.in);
            Student s= new Student();
            //输入姓名、年龄
            System.out.println("请输入姓名:");
            String name = scanner.nextLine();
            System.out.println("请输入年龄:");
            String age = scanner.nextLine();
            //将输入的姓名及年龄赋予对象s
            s.setName(name);
            s.setAge(age);
            //将对象s添加到列表中
            arrayList.add(s);
        }
    }
    
  4. map HashMap 概述:

    Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map

    用法:
    1. 构造方法:

      HashMap hashMap = new HashMap();//键和值类型均为string型
      
    2. 常用方法:

      //将指定值与该映射中的指定键相关联;
      // 第一次出现:添加元素
      hashMap.put("21130124","胡靖");
      // 第二次出现:修改元素
      hashMap.put("21130124","hj");
      //根据键删除键值对元素
      hashMap.remove("21130124");
      //删除所有键值对元素
      hashMap.clear();
      //判断集合中是否有指定的键
      hashMap.containsKey("21130124");
      //判断集合中是否有指定的值
      hashMap.containsValue("胡靖");
      //判断集合是否为空
      hashMap.isEmpty();
      //键值对个数
      hashMap.size();
      //根据键获取值
      hashMap.get("21130124");
      //获取所有键的集合
      {Set keySet= hashMap.keySet();
      for (String key:keySet) {
          System.out.println(key);
      }}
      //获取所有值的集合
      {Collection values = hashMap.values();
      for (String val:values){
          System.out.println(val);
      }}
      
    3. 遍历方式

      HashMap map = new HashMap<>();
      map.put("21130124","胡靖");
      map.put("21130303","韩京");
      //获取键的集合
      Set strings = map.keySet();
      //增强for:(遍历获取的元素:遍历对象)
      for (String s:strings){
          //     value = 遍历获取的键对应的值
          String value = map.get(s);
          //输出键值对
          System.out.println(s+","+value);
      }
      
    set HashSet 概述:

    Set体系集合可以知道某物是否已经存在于集合中,不会存储重复的元素。加入Set的每个元素必须是唯一的,否则,Set是不会把它加进去的。没有带索引的方法。无序

    用法:
    1. 构造方法:

      HashSet hashSet = new HashSet();
      
    2. 常用方法:

      hashSet.add("1");
      
    3. 实例:学生存储系统

      public class Student {
          private String name;
          private String id;
      
          public Student(String name, String id) {
              this.name = name;
              this.id = id;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public String getId() {
              return id;
          }
      
          public void setId(String id) {
              this.id = id;
          }
      
          @Override
          public boolean equals(Object o) {
              if (this == o) return true;
              if (o == null || getClass() != o.getClass()) return false;
      
              Student student = (Student) o;
      
              if (name != null ? !name.equals(student.name) : student.name != null) return false;
              return id != null ? id.equals(student.id) : student.id == null;
          }
      //快捷键Alt+insert,选择hashcode and equal
          @Override
          public int hashCode() {
              int result = name != null ? name.hashCode() : 0;
              result = 31 * result + (id != null ? id.hashCode() : 0);
              return result;
          }
      }
      
      
      public static void main(String[] args) {
          HashSet students = new HashSet<>();
          Student s1 = new Student("胡靖", "21130124");
          Student s2 = new Student("韩京", "21130303");
          Student s3 = new Student("胡靖", "21130124");
          students.add(s1);
          students.add(s2);
          students.add(s3);
      
          for(Student s:students){
              System.out.println(s.getName()+","+s.getId());
          }
      }
      
    Treeset 概述:

    有序,排序方法取决于构造方法

    用法:
    1. 自然排序:

      public class Main {
          public static void main(String[] args) {
              TreeSet treeSet = new TreeSet<>();
              Student s1 = new Student("hj",18);
              Student s2 = new Student("hx",20);
              Student s3 = new Student("hj",17);
              Student s4 = new Student("zxj",18);
              treeSet.add(s1);
              treeSet.add(s2);
              treeSet.add(s3);
              treeSet.add(s4);
              for(Student s:treeSet){
                  System.out.println(s.getName()+","+s.getAge());
              }
          }
      }
      
      public class Student implements Comparable{
          private String name;
          private int age;
      
          public Student() {
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setAge(int age) {
              this.age = age;
          }
      
          public Student(String name, int age) {
              this.name = name;
              this.age = age;
          }
          
          @Override
          public int compareTo(Student o) {
              //年龄按升序排序,this看做要进入集合的元素,o看做原本有的元素,this大则返回1
              int num = this.age-o.age;
              //姓名按字典序排序
              int num1= num==0?this.name.compareTo(o.name):num;
              return num1;
              
          }
      }
      
    2. 比较器排序:

      public class Student{
          private String name;
          private int age;
      
          public Student() {
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setAge(int age) {
              this.age = age;
          }
      
          public Student(String name, int age) {
              this.name = name;
              this.age = age;
          }
      }
      
      public class Main {
          public static void main(String[] args) {
              //可如自然排序中,在student中实现comparator接口,也可如下创建匿名内部类实现
              TreeSet treeSet = new TreeSet(new Comparator() {
                  @Override
                  public int compare(Student o1, Student o2) {
                      int num = o1.getAge()-o2.getAge();
                      int num1= num==0?o1.getName().compareTo(o2.getName()):num;
                      return num1;
                  }
              });
              Student s1 = new Student("hj",18);
              Student s2 = new Student("hx",20);
              Student s3 = new Student("hj",17);
              Student s4 = new Student("zxj",18);
              treeSet.add(s1);
              treeSet.add(s2);
              treeSet.add(s3);
              treeSet.add(s4);
              for(Student s:treeSet){
                  System.out.println(s.getName()+","+s.getAge());
              }
          }
      }
      
    二.常用类 1.Object 概述:
    • 此类是类层次结构的根,任何类都直接或间接基础该类;
    • 子类的构造方法默认访问父类的无参构造方法的原因是:他们的祖宗类Object为无参构造
    常用方法:
    1. toString:直接打印类信息时,结果不便阅读,为了方便打印类信息,最好重写toString
    2. equals:直接比较类时,比较的是地址,为了方便同类内容比较,最好重写equals
    2.String 概述:

    String就是字符串,所以所有双引号字符串都是String的对象

    用法:
    1. 构造方法:

      //创建空白字符串对象
      String s = new String();
      //根据字符数组内容创建字符串
      char[] ch = {'1','2','3'};
      String s1 = new String(ch);
      //根据字节数组内容创建字符串
      byte[] bytes = {1,2,3};
      String s2 = new String(bytes);
      //直接赋值
      String s3 = "123";
      
    2. 常用方法

      //比较地址是否相同
      System.out.println(s1==s2);
      //比较内容是否相同
      s1.equals(s2);
      //返回指定索引处的char值
      s1.charAt(1);
      //返回字符串长度
      s1.length();
      
    3.StringBuilder 概述:

    可变的字符串类

    用法:
    1. 构造方法

      //创建空白对象
      StringBuilder stringBuilder = new StringBuilder();
      //根据字符串s创建对象
      String s = "123";
      StringBuilder stringBuilder1 = new StringBuilder(s);
      
    2. 常用方法:

      //添加数据,并返回数据本身
      s1.append(1);
      //反转字符串,返回相反的字符序列
      s2.reverse();
      //转化成string
      s2.toString();
      
    4.StringBuffer 概述:

    可变的字符串类

    用法:
    1. 构造方法

      StringBuffer stringBuffer = new StringBuffer("123456");//括号内为字符串内容
      
    2. 常用方法

      //将指定字符串追加到末尾
      stringBuffer.append("123456");
      //将字符串反转
      stringBuffer.reverse();
      //移除指定位置的字符串
      //参数:起始位置的角标
      stringBuffer.delete(0,1);
      //将int参数的字符串表示形式插入此序列中
      stringBuffer.insert(1,1);
      //使用给定String中的字符替换此序列的子字符串中的字符
      //参数:起始位置角标及替换字符
      stringBuffer.replace(1,2,"12");
      //截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
      stringBuffer.substring(1,2);
      
    思考:

    stringbuffer与stringbuilder的区别:

    StringBuffer:可变字符串、效率低、线程安全;

    StringBuilder:可变字符序列、效率高、线程不安全;

    使用原则:

    如果要操作少量的数据,用String ;

    单线程操作大量数据,用StringBuilder ;

    多线程操作大量数据,用StringBuffer。

    5.System 概述:

    System是一个类,这个System类主要是一些与系统相关的属性和方法的集合,而且其内部的方法全部是静态的,所以我们直接使用System直接调用就好,比如我们常用的一个System.out.print。

    常用方法:
    //终止当前运行的java虚拟机,status值非零为异常
    System.exit(0);
    //返回当前时间与1970年01月01日00:00点之间的毫秒差值
    System.currentTimeMillis();
    //将数组中指定数据拷贝到另一个数组,其中传输依次为
    //原数组,原数组索引起始位置,目标数组,目标数组索引起始位置,复杂元素个数
    System.arraycopy();
    
    6.Data 概述:

    表示特定的瞬间,精确到毫秒,可以通过方法来设定自己所表示的时间,可以表示任意的时间

    用法:
    1. 构造方法:

      //当前时间
      Date date = new Date();
      //与1970年01月01日00:00点相差time时长的时间,单位毫秒
      long time = 1000*60*60;
      Date date1 = new Date(time);
      
    2. 常用方法:

      //获取从1970年01月01日00:00点到对象现在的时间值
      date.getTime();//结果为1970年01月01日00:00点到现在的毫秒数
      date1.getTime();//结果为date1值与1970年01月01日00:00点时间差毫秒数
      //设置时间,单位毫秒
      date.setTime(1000);
      
    转载请注明:文章转载自 www.mshxw.com
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号