p484-508
System类
常见方法


System.arrycopy(src,0,dest,1,2);
表示从scr的第0个位置拷贝2个,放到目标数组索引为1的地方。
BigInteger和BigDecimal类
保存大整数和高精度浮点数
BigInteger b = new BigInteger(“12332134546465464564645465489”);
在对BigInteger和BD进行加减乘除的时候,有特定的方法。不能直接+-*/
应该是字符串在模拟运算?
加 b.add(b2)
减b.subtract(b2)
乘b.multiply(b2)
除b.divide(b2)有异常,可能会无限循环,解决方法:在调用divide方法时,指定精度即可。
b1.divide(b2,BigDecimal.ROUND_CEILING)意为:如有无限循环,那就保留分子的精度。
日期类
第一代日期类

package com.day24;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author 马大可
* @version 1.0
*/
public class Date_ {
public static void main(String[] args) throws ParseException {
Date d1 = new Date();
System.out.println(d1);
SimpleDateFormat d2 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String f = d2.format(d1);
System.out.println(f);
//可以把一个格式化的字符串转成对应的类
String s = "2024年04月16日 02:04:34 星期日";
Date d3 = d2.parse(s);
System.out.println(d2.format(d3));
}
}
class AA{
}
第二代日期类
Calendar是抽象的,构造器也锁了,用getInstance来创建

public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println(c);
System.out.println(c.get(Calendar.YEAR));
}
第三代日期类



记不住。。。根本记不住,这几集好困。。。
集合
集合的好处:
1.可以动态保存任意多个对象,使用比较方便。
2.提供了一些列方便的操作对象的方法:add,remove,set,get等
3.使用集合添加、删除元素的代码更简洁了。
集合的框架体系


1集合主要是两组:单列集合,双列集合
2collection接口主要有两个重要的子接口LIst Set,它们实现子类都是单列集合
3.Map接口的实现子类是双列集合,存放的K-V
Collection接口


Collection接口(父)常用方法
public class Jihe {
public static void main(String[] args) {
//向上转型?
List list = new ArrayList();
//添加元素
list.add(10);
list.add("aaa");
list.add(true);
//输出
System.out.println(list);
//是否包含某个元素?
System.out.println(list.contains(10));
//列表的大小
System.out.println(list.size());
ArrayList l2 = new ArrayList();
l2.add("嘟嘟嘟");
l2.add(555);
//批量添加
list.addAll(l2);
System.out.println(list);
//批量查找
System.out.println(list.containsAll(l2));
//批量删除
list.removeAll(l2);
}
}
迭代器遍历
Collection接口遍历元素的方式:迭代器
1.Iterator的对象就是迭代器,主要用于遍历Collection集合中的元素。
2.所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口(父接口)的对象,即可以返回一个迭代器。
3.Iterator的结构:
(指针?)
4.Iterator仅仅用于遍历集合,Iterator本身并不存放对象
Iterator接口的方法

package com.day24.jihe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Itr {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("马大可",23));
col.add(new Book("马er可",423));
col.add(new Book("马3",232));
//现在想遍历这个col集合
//1.先得到col对应的迭代器
Iterator iterator = col.iterator();
while(iterator.hasNext()){//判断是否还有数据,指针移动...
Object ne = iterator.next();//返回下一个元素,类型是Object
System.out.println(ne);
}
//快捷键:快速生成while循环:itit
//显示所有快捷键的快捷键:ctrl+J
//需要再次遍历,那就要重置迭代器!
iterator = col.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
}
}
class Book{
private String name;
private int price;
public Book(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
for增强循环
for(类名 局部变量:遍历对象){循环体}
public class zengqiangfor {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("马大可",23));
col.add(new Book("马er可",423));
col.add(new Book("马3",232));
for(Object book:col){
System.out.println(book);//
}
}
}
List接口(儿子接口)特有方法
1.List集合类中,元素有序(即添加顺序和取出顺序一致)、且可以重复。
2.List集合中的每个元素都有其对应的顺序索引,即支持索引(从0开始)。
3.List容器中的元素都对应一个整数型的序号记载其在容器中的位置。可以根据序号存取容器中的元素。
4.JDK API中List接口的实现类有很多,常用的是ArrayList,LinkedList和Vector。前面那图要记住啊!
5.方法真的很多(心儿都碎了):
package com.day24.jihe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class zengqiangfor {
public static void main(String[] args) {
List list = new ArrayList();
List list2 = new ArrayList();
list.add("jack");
list.add("rwak");
list.add("asd");
list.add("ddddd");
list2.add("mdk");
list2.add("mdk");
System.out.println(list);
//在索引为1的位置插入一个对象
list.add(1,"插入一号位");
System.out.println(list);
//批量添加
list.addAll(2,list2);
System.out.println(list);
//查找obj在list中首次出现的位置
System.out.println(list.indexOf("mdk"));
//查找最后出现的位置
System.out.println(list.lastIndexOf("mdk"));
//移除制定位置的的元素,并返回此元素
list.remove(0);
System.out.println(list);
//设置指定index的元素为ele,相当于是替换.假如这个索引不存在,会抛出异常
list.set(1,"马大可一号");
System.out.println(list);
//返回从formIndex到toIndex位置的子集合。
List l2 = list.subList(0,2);//是[0,2),实际上返回0和1位置的元素
System.out.println(l2);
}
}
List的三种遍历方式
只要是实现了List接口的子类,它们的遍历方式是完全一样的,我可以
List list = new ArrayList(); List list1 = new LinkedList(); List list2 = new Vector();
1.迭代器
2.增强for
3.普通for
for (int g =0;g<list.size();g++){ System.out.println(list.get(g)); }
很妙的一个排序
public static void sort(List list){
int size = list.size();
int t= 0;
for (int i = 0; i < size; i++) {
for(int j = 0;j<size-1-i;j++){
//取出对象book
Book book1 = (Book)list.get(j);
Book book2 = (Book)list.get(j+1);
if(book1.price>book2.price){
list.set(j,book2);
list.set(j+1,book1);
}
}
}
}



















