第五天常用类和集合部分


狂神的JavaSE看完了去看黑马的常用类和集合发现黑马讲的很细致,但是常用类和集合涵盖的方法有点多,感觉如果工作上遇到可能还是要去找方法,记不住的

常用类

1.Math

包含执行基本数字运算的方法

ceil() 向上取整 大于等于double

floor() 向下取整 小于等于 double

round() 四舍五入 int

max() 两个int的最大值

min() 两个int的最小值

pow() double的幂运算

random() 返回一个 [0.0 - 1.0) 的double类型的值

 

2.System

exit() 非0表示异常退出当前运行的java虚拟机

currentTimeMillis() 放回当前时间的毫秒值 从1970.1.1开始计时

public static void main(String[] args) {
?
       long start = System.currentTimeMillis();
       for (int i = 0; i < 10000; i++) {
           System.out.println(i);
      }
       long end = System.currentTimeMillis();
       System.out.println("共耗时:"+(end-start)+"毫秒");
?
  }

 

3.Object类

Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类 构造方法: public Object() 回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?因为它们的顶级父类只有无参构造方法

 

public String toString() 返回对象的字符串表示形式,建议所以子类重写,可以自动生成

public boolean equals (Object obj) 方法

其中 == 比较的是地址值

而equals()方法默认是比较值的,可以重写方法比较内容,重写可以自动生成

 

4.Arrays

public static String toString ( int[] a ) 返回数组的内容以字符串形式

public static void sort ( int[] a ) 按照数字顺序排序数组

 

 

5.基本类型包装类

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据常用的操作之一:用于基本数据类型与字符串之间的转换.

其中int的包装类是Integer

char的包装类是Character 其余的都是首字母大写

Integer():

Integer i1 =  Integer.valueOf(100);
       System.out.println(i1);
       System.out.println("=============");
       Integer i2 =  Integer.valueOf("100");
       System.out.println(i2);
Output:
100
=============
100

int 和 String的相互转换

  1. int转换为String public static String valueOf(inti):返回int 参数的字符串表示形式。该方法是String类中的方法

  2. .String转换为int public static int parseInt(Strings):将字符串解析为int类型。该方法是Integer类中的方法

int number = 100;
       // int 和 String相互转换
       //方式一
       String s1 = "" + number;
       System.out.println(s1);
?
       //方式二   public static String valueOf (int i)
       String s2 = String.valueOf(number);
       System.out.println(s2);
?
       //String 转换为 int
       //方式一 通过Integer作为桥梁
       String s3 = "100";
       Integer i = Integer.valueOf(s3);
       //public int intValue()
       int x = i.intValue();
       System.out.println(x);
?
       //方式二
       //public static int parseInt(String s)
       int y = Integer.parseInt(s3);
       System.out.println(y);

6.日期类

Date类

public Date()

public Date(long date)

Date date = new Date();
       System.out.println(date);
       System.out.println("==========");
       long d1 = 1000*60*60;
       Date d2 = new Date(d1);
       System.out.println(d2);
OutPut:
Wed Jan 12 15:24:49 CST 2022
==========
Thu Jan 01 09:00:00 CST 1970

public long getTime() 获取的日期对象从1970年1.1日00:00:00到现在的毫秒值

public void setTime(long time) 设置时间给的是毫秒值

Date d = new Date();
       System.out.println(d.getTime());
       System.out.println(d.getTime()*1.0/1000/60/60/24/365+"年");
?
       long time = 1000*60*60;
       d.setTime(time);
       System.out.println(d);
       long t1 = System.currentTimeMillis();
       d.setTime(t1);
       System.out.println(d);
OutPut:
1641973000675
52.066622294362
Thu Jan 01 09:00:00 CST 1970
Wed Jan 12 15:36:40 CST 2022

SimpleDateFormat 类

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式化和解析 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到 ‘Z’以及从 ‘a'到‘Z’引号的字母被解释为表示日期或时间字符串的组件的模式字母

        //格式化Date到String
       Date d = new Date();
//     SimpleDateFormat sdf = new SimpleDateFormat();
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
       String s = sdf.format(d);
       System.out.println(s);
       System.out.println("=======");
       //解析String为Date对象
       String ss = "2022-01-12 15:49:22";
       SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       Date dd = sdf1.parse(ss);
       System.out.println(dd);

Calendar类

Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法 Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getlnstance();

    public static void main(String[] args) {

       Calendar c = Calendar.getInstance();
//       System.out.println(c);
?
       //需求:10年后的5天前
       c.add(Calendar.YEAR,10);
       c.add(Calendar.DATE,-5);
       
       
       int year = c.get(Calendar.YEAR);
       int month = c.get(Calendar.MONTH)+1;
       int date = c.get((Calendar.DATE));
       System.out.println(year+"年"+month+"月"+date+"日");
//手动设置年月日
       c.set(2050,11,11);
  }
OutPut:
2022年1月23日

 ======================================================

1.集合

编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需求,更适应不了变化的需求,那么,此时该如何选择呢?

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

 

1.Arraylist < E >

  • 可调整大小的数组实现

  • :是一种特殊的数据类型,泛型。

  • 在出现E的地方我们使用引用数据类型替接即可举例:

  • ArrayList , ArrayList

ArrayList构造方法和添加方法

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

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() 返回集合中的元素的个数
public class ArrayListDemo01 {
   public static void main(String[] args) {
?
       ArrayList<String> arrayList = new ArrayList<>();
       arrayList.add("Hello");
       arrayList.add("word");
       arrayList.add("java");
       arrayList.add(1,"javase");
       System.out.println(arrayList);
  }
}

2.Collection单列集合&&Map双列集合

Collection单列集合中: //接口

  • 其中List元素可重复 //接口

    • ArraryList //实现类

    • LinkedList //实现类

  • Set集合元素不可重复 //接口

    • HashSet //实现类

    • TreeSet //实现类

Map双列集合中 //接口

  • HashMap //实现类

 

Collection

  • Collection集合概述

  • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

  • 创建Collection集合的对象

    • 多态的方式

    • 具体的实现类ArrayList

//基本使用     
//创建Collection集合的对象
       Collection<String> c = new ArrayList<>();
?
       //添加元素:boolean add(E e)
       c.add("Hello");
       c.add("Word");
       c.add("Java");
       System.out.println(c);
  }

常用方法

        Collection<String> c =new ArrayList<>();
       System.out.println(c.add("Hello"));
       System.out.println(c.add("World"));
       System.out.println(c.add("World"));
?
       c.remove("World");
       System.out.println(c.contains("World"));
       System.out.println(c);

Collection集合的遍历

  • lterator:迭代器,集合的专用遍历方式

  • lterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的

  • lterator中的常用方法

    • E next():返回迭代中的下一个元素

    • boolean hasNext():如果迭代具有更多元素,则返回true

        Iterator<String> it = c.iterator();
       while (it.hasNext()) {
           String s = it.next();
           System.out.println(s);
      }

3.List集合

  • List集合概述

  • 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素

  • 与Set集合不同,列表通常允许重复的元素

        List<String> li = new ArrayList<>();
       li.add("Hello");
       li.add("World");
       li.add("Java");
       li.add("Java");
//       System.out.println(li);
       Iterator<String> it = li.iterator();
       while (it.hasNext()){
           String s = it.next();
           System.out.println(s);
      }
List<String> list = new ArrayList<>();
?
       list.add("hello");
       list.add("world");
       list.add("java");
?
       Iterator<String> it = list.iterator();
?
       for (int i = 0; i < list.size(); i++) {
           String s = list.get(i);
           if (s.equals("world"))
               list.add("javaee");
      }

//其中通过迭代器修改会触发并发修改异常---实际修改次数与预期修改次数不同
//       while (it.hasNext()){
//           String s = it.next();
//           if (s.equals("world"))
//               list.add("javaee");
//       }
       System.out.println(list);
  }