官方文档API

包装类

byte(Byte)、short(Short)、int(Integer)、long(Long)
float(Float)、double(Double)、char(Character)、boolean(Boolean)

  1. java.lang包,不需要import
  2. 6个和数字相关的包装类,默认继承 Number
  3. 8个包装类都实现了 Serializable,Comparable
  4. 构造函数重载 – 包装类(int\String)

常用方法

intValue()、Integer.parseInt(“123”)、new Integer(“123”)

1.5版本以后,自动拆装包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = new Integer(10);
Integer i4 = new Integer(10);

//判断结果
i1==i2 //true
i1==i3 //false
i3==i4 //false
i1.equals(i2); //true
i1.equals(i3); //true
i3.equals(i4); //true

Integer i1 = 1000;
Integer i2 = 1000;
//private static IntegerCache
//Integer类静态元素区,空间内加载 Integer[] 值范围 -128~127,超出范围则new Integer();

Integer i3 = new Integer(1000);
Integer i4 = new Integer(1000);

//判断结果
i1==i2 //false
i1==i3 //false
i3==i4 //false
i1.equals(i2); //true
i1.equals(i3); //true
i3.equals(i4); //true

/**
* “==” 比较的是变量存储的值
* equals 默认和 “==” 一样,重写的equals 一般比较的是数值
*/

Math 类

1、java.lang包
2、构造方法私有
3、提供的属性、方法都是私有
4、常用方法

abs() random()
ceil() floor() rint() 返回值 double
round() 返回值 int
max(a,b)
pow(a,b) squrt(a) 返回值 double

1
2
3
4
5
6
//0~9 之间的随机数
int val = (int)(Math.random()*10)

//5.0-10.9 之间的数
(Math.random()*6) + 5
//小数计算会丢失精度

Random 类

1、java.util 需要 import 导包
2、没有任何继承关系,默认继承 Object
3、常用方法

nextInt()
nextInt(bound) //bound 不可以去负值 IllegalArgumentException

1
2
3
4
5
6
7
8
Random r = new Random()
r.nextInt() //返回随机整数,范围 -2的31次方 ~ 2的31次方
r.nextInt(10) //返回随机整数,范围 [0 ~ 10)

r.nextFloat() [0.0 ~ 1.0)

//5.0-10.9 之间的数
r.nextInt(6) + 5 + r.nextFloat();

UUID 类

1、java.util 需要 import 导包
2、没有任何继承关系,默认继承 Object
3、无参数构造方法
4、常用方法

1
2
3
4
5
//32位随机元素,每个位置16进制数 作为ID Key 使用
UUID uuid = new UUID.randomUUID();
uuid.toString();

//d3b8885f-89f2-4cd5-bd33-70ab47dcab4e

BigInteger 类大整数,超出 long 范围

本质 动态数组

1、java.math 需要 import 导包
2、继承自 Number
3、BigInteger bi = new BigInteger(“123”) 常使用 String 参数构造函数
4、常用方法

add()
subtract()
multiply()
divide()

BigDecimal 类大小数,超出 double 范围

同 BigInteger

setScale(newScale, BigDecimal.ROUND_DOWN) //小数点后数据处理方式(位数,设置模式)

DecimalFormat

格式化数据,四舍五入

1、java.text 需要 import 导包

1
2
DecimalFormat df = new DecimalFormat("000.###");  //0 必须存在 # 可有可无
String val = df.format(123.4584); // 123.458

System 类

1、java.lang包
2、不需要创建对象
3、常用属性、方法

out、in、err
gc()、exit(0)、currentTimeMillis():当前时间的毫秒值

Date 类

1、java.util 需要 import 导包
2、常用方法

before()、after()
setTime()、getTime() —> long

DateFormat 类

Date 日期格式化

1、java.text 需要 import 导包
2、抽象类,需要使用子类 SimpleDateFormat

1
2
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
sdf.format(System.currentTimeMillis);

Calendar 类

1、java.util 需要 import 导包
2、受保护的类,需要使用 getInstance
3、常用方法

1.1 版本

before()、after()
setTime()、getTime() —> Date
getTimeInMillis() —> time
getTimeZone() —> 时区
get()、set()

1
2
3
4
5
6
7
8
9
10
11
12
Calendar calendar = Calendar.getInstance();  //系统当前时间的 calendar 对象
calendar.get(Calendar.YEAR);
calendar.get(Calendar.MONTH);
calendar.get(Calendar.DAY_OF_MONTH);

calendar.set(Calendar.MONTH,5);

TimeZone tz = TimeZone.getDefault();
tz = calendar.getTimeZone();

tz.getID(); // 上海
tz.getDisplayName(); // 中国标准时间

String 类

1、java.lang包 不需要导包
2、String sa = “abc”
String sa = new String(“abc”)
3、实现接口 Serializable、CharSequence、Comparable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
String s1 = "abc"
String s2 = "abc"
String s3 = new String("abc");
String s4 = new String("abc");

//判断结果
s1==s2 //true
s1==s3 //false
s3==s4 //false
s1.equals(s2); //true
s1.equals(s3); //true
s3.equals(s4); //true

//String 类 重写了 equals 方法

3、String 的不可变特性

长度、地址、内容不可变
String类中包含一个char[] 修饰符为 private final char[] value,存储 String 中的每一个字节

4、常用方法

equals()、hashCode() //继承 Object 重写,前者返回值 boolean 后者返回值 int
compareTo() //实现 Comparable 接口
toString()
charAt(index)
codePointAt(index) //获取 code 码
length()
concat(String)
contains()
startsWith()
endsWith()
getBytes() // 字符串转成数组 byte[]
toCharArray() char[]
indexOf()
isEmpty()
replace()
matches(regex)
split(regex)
substring()
trim()

StringBuffer/Builder

1.0 版本/1.5 版本

1、java.lang包 不需要导包
2、实现接口 Serializable、Appendable、CharSequence
3、可变字符串 char[] 动态扩容

1
2
3
StringBuilder sb = new StringBuilder();  //默认长度 16
StringBuilder sb = new StringBuilder(20); //自定义长度
StringBuilder sb = new StringBuilder("abc"); //字符串长度 + 16

4、常用方法

append()

200000次拼接字符串操作,“+”:10000ms “contact”:5000ms “StringBuilder–append”:7ms

substring(int,int) //需要接受返回值
delete(int,int)
deleteCharAt()
setCharAt()
insert()
reverse()

正则表达式

1
2
3
Pattern p = Pattern.compile("regex");
Matcher m = p.matcher(str);
m.matches()

集合

java.util包 需要导包

用来存储一组元素

Collection \ Map
存储 value对象 \ 存储 Key-Value
List,Queue,Set

List:有序可重复
Set:无序无重复
Map:Key 无序无重复,Value 无序可重复

List 集合

  • ArrayList \ Vector

常用方法:add、remove、get、set、size、addAll、contains、indexOf
iterator(迭代器)、retainAll、subList、toArray

ArrayList 底层是一个 Object[] 什么类型都可以存进去,取值多态,使用不方便
JDK 1.5 增加泛型
泛型类、泛型接口、泛型方法、高级泛型(规范边界、extends super)
1
2
3
4
5
6
7
8
9
10
11
ArrayList list = new ArrayList();
list.add("123");
list.add(17);
list.add(false);

for(Object x:list){
System.out.println(x);
}

ArrayList<String> str_list = new ArrayList<String>();
str_list.add("13");
  • Stack 类 继承 Vector

1、构造方法只有无参数的
2、常用方法

push(压入栈顶)、pop(取出并删掉)、peek(查看栈顶元素,不删除)、empty、search

  • Queue 接口

1、通常子类 LinkedList、ArrayDeque
2、构造方法只有无参数的
3、常用方法

add、element、remove
offer、peek、poll //和上面方法用法一致,不同点在于异常时不会抛出

  • LinkedList 类

1、实现 List、Queue 接口
2、底层使用双向链表的数据结构存储
3、常用方法

List、Queue 的方法都可以使用

ArrayList 200000次操作 向后追加 5ms 向前插入 4000ms 遍历轮询 3ms 删除 4000ms
LinkedList 200000次操作 向后追加 4ms 向前插入 4ms 遍历轮询 3ms 删除 3ms

Set 集合

发现重复数据拒绝存入,存储的是第一个

1、常用方法

add、clear、clone、contains、isEmpty、remove、size

  • HashSet 类

底层 HashMap

*无法修改值*
*无重复:equals、hashCode 重写*
1
2
3
4
//取元素
Iterator<string> it = set.iterator();
it.hasNext();
it.next();
  • TreeSet 类

底层 TreeMap

*无法修改值*
*无重复:compareTo 重写*

Map 集合

映射 通过 Key 直接查找到 Value 的值

发现重复数据直接覆盖
  • HashMap 类

底层数据结构 (数组+链表)散列表

1、常用方法

containsKey、containsValue、put、get、keySet、entrySet、size、replace、remove、getOrDefault
putIfAbsent(如果 key 存在则不覆盖)

  • treeMap 类

底层数据结构 (数组+链表)二叉树

Entry 实现 comparable 接口,key 比较,小放左边,大放右边,一致就覆盖

1、常用方法

subMap、tailMap

红黑二叉树 左旋右旋

  • Properties 类(读取文件中的信息)