常用类
1、包装类  √
2、String类 ★
3、StringBuffer和StringBuilder类  ★
4、Math类
5、System类
6、Arrays类
7、BigInteger类和BigDecimal类
8、Date日期类、Calendar日历类以及新的日期包装类
理解
回顾
数据类型
    基本数据类型
    引用数据类型
        数组
        用class定义的
        用interface定义的
    **基本数据类型没有属性和方法**包装类需求
① 获取int类型的最大值
② 将某个整数转换成十六进制形式
概念
为八大基本数据类型对应的提供了引用数据类型,则这些引用数据类型称为包装类
// i 与 i2是一样的
int i=10;
Integer i2=new Integer(i);分类 ★
引用类型命名要求首字母大写,前六个为数值类,其父类为Number
    byte————————————Byte
    short———————————Short
    int—————————————Integer
    long————————————Long
    float—————————— Float
    double——————————Double
    char————————————Character
    boolean—————————Boolean
基本类型和包装类型之间的转换(针对八大包装类型) ★
jdk5.0之前:
手动装箱(int 转 Integer):
    方式一:Integer i = new Intege r(10);
    方式二:Integer i2 = Integer.valueOf(10);
手动拆箱(Integer 转 int):
    int j = i.intValue();jdk5.0之后:
自动装箱:
Integer i = 10;
自动拆箱:
int j = i;包装类型和String类型之间的转换
包装类型——>String类型
Integer i = 10;
//方式1:
String s1= i.toString();
//方式2:
String s2 = String.valueOf(i);
//方式3:
String s3 = i+"";
System.out.println(s3);String——>包装类
//方式1:
Integer j = new Integer(s1);
//方式2:
Integer j2 = Integer.valueOf(s2);基本类型和String类型之间的转换
基本类型——>String类型
int i = 10;
//方式1:
String s=i+"";
//方式2:
String s2 = String.valueOf(i);String——>基本类型(除了char类型)
int j = Integer.parseInt(s);
char c = s.charAt(0);总结包装类中涉及到的API
通用方法
valueOf:将String类型或基本类型转换成对应的包装类型
parseXX:将String类型转换成对应的基本类型
xxValue:将包装类型转换成对应的基本类型Character类的特有方法:
    toUpperCase:转换为大写
    toLowerCase:…..小写
    isUpperCase:判断某个字符是否为大写
    isLowerCase:……………小写
    isDigit:判断某个字符是否为数字
    isLetter:判断某个字符是否为字母
    isWhiteSpace:判断某个字符是否为空格
例1
public class TestInteger {
    public static void main(String[] args) {
        Integer m = 1;//自动装箱,实则调用Integer类的valueOf(方法中-127 - 128之间的数是地址相等的,其他的则是new)
        Integer n = 1;
        System.out.println(m == n);
//        只要有new,地址肯定不同
        Integer x = 128;//new Integer(128);
        Integer y = 128;//new Integer(128)
        System.out.println(x == y);
    }
}例2
Integer i1 = 127;
int i2 = 127;
System.out.println(i1 == i2);  //true(双等里面有一个是int,则按int值是否相等来判断)String类
理解
String类用于保存一组字符串序列的(”john”、”” 都相当于字符串常量对象)
创建对象
方式1:直接赋值
String s  = "hello";方式2:通过调用构造器
String s = new String("hello");  //其中hello为任意字符串两种创建对象方式的区别
方式一:先去常量池查看是否有“hello”字符序列,如果没有,则创建,如果有直接引用该地址(s指向的是常量池的对象)
方式二:需要在堆中创建对象,该对象维护了一个value属性,value指向常量池的“hello”,如果常量池中没有“hello”,则创建,再指向;如果已经有了,则直接用value指向(s指向的是堆中的对象)

特性
String类保存的是字符串常量,里面一旦赋值,则值不能更改,只能更改地址
常见方法
length 获取字符串字符个数
charAt 获取指定索引处的字符(0 - length-1)
toUpperCase 转大写
toLowerCase 转小写
indexOf 获取字符或字符串第一次出现的索引(0 - length-1),如果找不到返回-1
lastIndexOf 获取字符或字符串最后一次出现的索引,如果找不到返回-1
startsWith 判断是否以xx开头
endsWith 判断是否以XX结尾
regionMatches 判断是否某范围内的子串一致
    regionMatches(toffset, other, ooffset, len)
    toffset:源字符串起始位置
    other:另一个字符串
    ooffset:目标字符串起始位置
    len:目标字符串中要比较字符串长度
contains 判断子串是否存在,返回true|false
compareTo 比较两个字符串大小("a".compareTo("b")  //-1)
equals/equalsIgnoreCase 判断字符串内容是否相等(是否忽略大小写)
substring 截取指定索引之后(包含指定索引)的子串
    "abcdefg".substring(4) //efg
    "abcdefg".substring(0,3) //abc
replace/replaceAll 替换
    s.replace(oldChar,newChar)
trim 去前后空格
split 根据指定字符拆分
concat 拼接字符串
toCharArray 转换成字符数组StringBuffer类(StringBuilder与此类似,只不过加了个同步(synchronized关键字))
理解
StringBuffer类相当于String类增强版,也是用于保存字符串的。也可以实现对字符串的更新、处理操作
String类和StringBuffer的对比
相同点:都用于保存字符串,都可以对字符串进行一些增删或其他处理的操作
不同点:
        String类用于保存字符串常量
        StringBuffer类用于保存字符串变量
StringBuffer类创建对象
只能通过调用构造器创建对象!
new StringBuffer(); 构造一个初始容量为16的char数组
new StringBuffer(string);构造一个初始容量为string.length+16的数组,并初始化值为string
new StringBuffer(capacity);构造一个初始容量为capacity的char数组常见方法
append 在后面增加字符(可以为任意类型)
delete 删除某区间字符
    replace(start,end)
    start:开始索引
    end:结束索引+1
replace 修改确定区间字符
    replace(start,end,str)
    start:开始索引
    end:结束索引+1
    str:替换字符串
indexOf 查找某字符在字符串中位置
insert 插入字符
    insert(index,str)
    index:插入位置索引
    str:插入字符串
reverse 反转字符
length 字符串中实际字符个数StringBuffer类和String类之间的转换
StringBuffer——>String
    StringBuffer buffer = new StringBuffer("john");
    //方式一:
    String s1 = buffer.toString();
    //方式二:
    String s2 = new String(buffer);String——>StringBuffer
    String s = "鸠摩智";
    //方式一:
    StringBuffer b1 = new StringBuffer(s);
    //方式二:
    StringBuffer b2 = new StringBuffer();
    b2.append(s);StringBuffer和StringBuilder的对比
| 共同点 | 版本 | 线程安全(同步) | 效率 | |
|---|---|---|---|---|
| StringBuffer | 保存可变字符串 | 老 | 安全 | 较低 | 
| StringBuilder | 保存可变字符串 | 新 | 不安全 | 较高 | 
效率:StringBuilder>StringBuffer>String
Math类
sqrt 求开方
pow 求幂
    pow(a,b) a的b次方
ceil 向上取整
floor 向下取整
round 四舍五入,返回整型(接用floor实现)
abs 绝对值
random 随机数(0-1之间小数)
max 最大值
min 最小值Arrays
操作数组的各种方法
常见方法:
sort(T[]) 对数组的元素进行自然排序,要求元素必须实现了Comparable
sort(T[],Comparator) 对数组的元素进行定制排序,元素本身可以不实现Comparable(自己重写)
    sort(a,new comparator(){
        //重写方法
        public int compare(Object o1,Object o2){
            //用于比较的重写的方法
        }
    })
binarySearch(T[],key) 对数组通过二分搜索法进行查找,如果key找到了,返回索引(排好序之后的),否则返回负数。(**要求:要查找的数组必须提前排好序!**)
copyOf(T[],length) 复制数组的元素(底层实现为arrayCopy)
    T[]:要复制的数组
    length:新数组长度(若长,则用null补齐,若短则截取)
equals(T1[],T3[]) 判断两个数组的内容是否相等(考虑顺序)
fill(T[],key) 填充数组的各元素值为key
toString() 将数组各元素进行拼接,返回StringSystem类
常见方法
arrayCopy 复制数组元素,一般使用Arrays.copyOf代替
    System.arraycopy(src, index1, dest, index2, length)
        src:要复制数组
        index1:要复制数组开始索引
        dest:目标数组
        index:目标数组开始索引
        length:复制长度
exit 退出程序
currentTimeMillens 获取当前时间距离1970-1-1的毫秒数。
gc 运行垃圾回收器BigDecimal和BigInteger类
BigInteger 用于保存数值范围更大的整数
BigDecimal 用于保存精度更高的浮点型
常见方法
add 加法
substract减法
multiply乘法
divide除法,注意:可以添加参数2设置四舍五入模式日期类
第一代日期
java.util.Date类 (获取日期)
//创建Date对象
//方式一:调用无参构造器(获取系统当前时间)
Date d1 = new Date();
System.out.println(d1);
//方式二:调用有参构造器(获取距离基准时间(1970.01.01.00.00)指定毫秒数的日期对象)  不建议使用!
Date d2 = new Date(92345678);
System.out.println(d2);java.text.SimpleDateFormat类 (格式化日期)
例1
public void testDateFormat1() throws ParseException{
    //创建日期对象
    Date d = new Date();
    //根据默认格式创建SimpleDateFormat对象
    SimpleDateFormat sdf = new SimpleDateFormat();
    //---------------------方法----------------
    //格式日期:Date————>String 
    String format = sdf.format(d);
    System.out.println(format);  // 20-3-31 下午12:30
    //解析日期:String————>Date
    String  s = "2020-03-31 下午3:22";  //因为这里面格式可能不对,所以会加一个异常
    Date parse = sdf.parse(s);
    System.out.println(parse);  // Tue Mar 31 15:22:00 CST 2020
}例2
public void testDateFormat2() throws ParseException{
    //创建日期对象:Fri Mar 30 15:16:41 CST 2018
    Date d = new Date();
    //根据指定格式创建SimpleDateFormat对象
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日hh小时mm分钟ss秒");  //格式可进行更改(星期、上午下午都可以加)
    //---------------------方法----------------
    //格式日期:Date————>String 
    String format = sdf.format(d);
    System.out.println(format);  //2020年03月31日12小时42分钟20秒
    //解析日期:String————>Date
    String  s = "2008年12月30日 01小时26分钟36秒";
    Date parse = sdf.parse(s);
    System.out.println(parse);  //Tue Dec 30 01:26:36 CST 2008
}第二代日期
java.util.Calendar类 为特定瞬间与指定年 月 日等日历字段之间的转换提供了一些方法
//1.获取Calendar对象
Calendar c = Calendar.getInstance();
System.out.println(c);
//2.通过调用方法获取各个日历字段
System.out.println("年:"+c.get(Calendar.YEAR));
System.out.println("月:"+c.get(Calendar.MONTH)+1);
System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:"+c.get(Calendar.HOUR));
System.out.println("分钟:"+c.get(Calendar.MINUTE));
System.out.println("秒:"+c.get(Calendar.SECOND));
System.out.println("星期:"+c.get(Calendar.DAY_OF_WEEK)+1);注意结果,月会少1,星期是多1
第三代日期(jdk8新特性)
LocalDate|LocalTime|LocalDateTime类:类似于Calendar
Instant:类似于Date
DateTimeFormatter:类似于SimpleDateFormat
例1
public void test1() {
        //1.获取LocalDateTime对象
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
        //2.获取各个日历字段
        System.out.println(now.getYear());
        System.out.println(now.getMonthValue());  //数字
        System.out.println(now.getMonth());  //英语
        System.out.println(now.getDayOfMonth());
        System.out.println(now.getHour());
        System.out.println(now.getMinute());
        System.out.println(now.getSecond());
        System.out.println(now.getDayOfWeek());
    }例2
public void test2() {
    LocalDateTime now  = LocalDateTime.now();
    //1.根据指定的格式创建DateTimeFormatter对象
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");  //H24小时制
    //2.--------------调用方法-----------------------
    //格式日期:Date——>String
    String format = dtf.format(now);
    System.out.println(format);
    //解析日期:String——>Date
    LocalDateTime parse = LocalDateTime.parse("2020年03月31日 16小时02分钟06秒",dtf);
    System.out.println(parse);
}
例3
public void testInstant() {
    //1.获取Instant对象
    Instant instant = Instant.now();
    //2.Instant和Date之间的转换
    //①Instant——>Date
    Date date = Date.from(instant);
    //②Date——>Instant
    Instant instant2 = date.toInstant();
    System.out.println(instant2);
} 
                     
                     
                 
                        
                        