20200810-Java高级API总结

1、集合框架

List:有序
ArrayList:长度可变的数组,便于查找和随机访问
LinkedList(Node):双向链表,便于插入和删除(针对Node的next和pre)
Set:不重复
HashSet:HashMap的key的hashCode()和equals()方法共同保证不重复
addAll() 对Set和List进行互相转换
Map:Entry<k,v>键值对 Entry是Map的一个静态类
遍历:List:fori,增强for,迭代器while hasnext
Set:增强for,迭代器
Map: entrySet() KeySet() values()
泛型:限定了集合类型的输入和输出 Comparable
add()/put()/addAll()
remove()
set()/put()
ger() HashSet没有get方法,原因是没有下标/List是get下标,Map是遍历key
Collections: ComparAble
new Comparator{int compare(Student o1,Student o2){return o1.stuId-o2.stuId}}比较两个相同类型,升序

2、实用类

包装类:方便泛型使用,与String类型的转换
装箱:把基本数据类型变为包装类型
拆箱:把包装类型转为基本数据类型
Integer a=1;//自动装箱
int b=new Integer(12);//自动拆箱,一般用在方法的返回值,参数列表传递的时候
Math类:数学公式
Random类:各种随机数,种子,一旦加了种子就是伪随机
枚举类:特殊的类,私有构造,直接写的值都是当前类型的一个个对象
String:底层是字符数组常量,不可改变
indexof,split,charAt,substring截取字符串 直接传一个参数,从头截取到哪里,两个参数,从第一个参数的下标,到第二个参数的下标,左闭右开
toCharArray 转成char数组,适用于有中文的情况 getBytes 转成byte数组
StringBuffer:线程安全的,比较慢
append(),toString()
StringBuilder单线程的,较快,长度可变的字符数组,底层是变量,初始16个,再扩容
Date:System.currentTimeMillis() 默认显示的UTC时间
SimpleDateFormat时间格式:"yyyy-MM-dd HH:mm:ss.S"一般不用毫秒数(.S)

3、io流:

InputStream OutputStream Reader Writer
普通流:FileInputStream FileOutputStream FileReader FileWriter
转换流:InputStreamReader OutputStreamWriter,转换流及字符编码
高级流:
缓冲流:
一行一行读,整个字符串写,只能装Reader和Writer,把流在闲时先一步读取进缓存
BufferedReader、BufferedWriter
二进制流:
先把要传输的图片、视频、音频等先放入文件流,
再把文件流装入DataInputStream、DataOutputStream
相对安全
对象流:
对象要先实现Serializable接口,ObjectInputStream和ObjectOutputStream
读取过程:
1、把文件放入文件输入流中,先定义再处理异常的方式
2、read() read(b) …read范围Byte数组 (放入字符串)
3、关闭流
写入过程:
与读取过程基本类似,把输出路径装入流,把字符串写进去

4、多线程

继承Thread类,实现Runnable接口
start()和run()的区别:start是真正实现多线程的方法,run是普通方法 start调用start(0)然后调用run(方法)
实现Callable接口:call()方法有返回值(泛型)和run()方法区别并不大
FutureTask task=new FutureTask(Callable接口的实现类的对象);
Thread t=new Thread(task);
t.start();
task.get();//可以获取到它的返回值

5、反射:运行时获取对象、操作对象及其属性和方法

类型.class、对象.getClass()、Class.forName(“类的全路径”);
获取构造方法(getDeclaredConstructor()) newInstance()
方法(getDeclaredMethod(“方法名”,参数类型)) invoke(对应的参数)
属性 (getDeclaredField(“属性名”)) set()
权限不够的需要执行setAccessible(true);

6、xml和json

xml格式:<?xml version="1.0" charset="UTF-8"?>
根标签、一一对应(有开头、有结束)
作用:传输数据(基本被抛弃了)、配置文件
DOM获取:
1、DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
2、DocumentBuilder builder = factory.newDocumentBuilder();
3、Document document=builder.parse(“xml路径/或者用InputStream的形式获取”);
4、Element e=document.getElementById/document.getElementsByName(“标签名称”);
5、e.item(0);
Dom保存:
1、TransformFactory tf=TransformFactory.newInstance();
2、Transform t=f.newTransform();
3、DomSource s=new DomSource(document);
4、StreamResult sr=new StreamResult(writer对象装入目标地址);
5、tf.transform(s,sr);
json:对象要实现Serializable接口
对象转json格式字符串: JSON.toJSONString(对象);
对象转json JSON.toJSON/JSON.parseObject(json串);
json转对象 JSON.toJavaObject(json对象,java对象类型.class);

7、正则表达式:规则表达式

匹配规则

猜你喜欢

转载自blog.csdn.net/qq_42005540/article/details/107919600