概念:所有对象的顶级父类。存在java.lang包中
toString
equals
hashCode
1. ==比较八大基本类型时:判断的是值
2. ==比较对象时,比较的是对象的地址值
3. equals用来比较对象存着的值
length()
charAt()//返回索引处的值
lastIndexOf()
substring()
//截取//截取时含头不含尾[3,7)
String s = "abcdefghijk";
System.out.println(s.substring(3,7));//defg
equals()
//判断两个字符串的内容是否相同
String s = "abcdefghijk";
String s1 = "abc";
System.out.println(s.equals(s1));//false
startsWith()
//是否以指定后缀开始
String s2="1,2,3,4,5";
System.out.println(s2.startsWith("1,"));//true
endsWith()
//是否以指定后缀结束
System.out.println(s.endsWith("jk"));//true,是否以jk结束
split()
//根据指定切割字符串
split(","),//根据,切割
trim()
//去除前后端空格
1. 封装了char[]数组
2. 是可变的字符序列
3. 提供了一组可以对字符内容修改的方法
4.常用append()来代替字符串做字符串连接
5. 内部字符数组默认初始化容量是16:initial capacity of 16 characters
6. 如果大于16会尝试扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。int newCapacity = value.length * 2 + 2;
7. StringBuilder 1.0 出道线程安全,StringBuilder 1.5 出道线程不安全
charAt()
append()
1、 在线程安全上,
--StringBuffer是旧版本就提供的,线程安全的。@since JDK1.0
--StringBuilder是jdk1.5后产生,线程不安全的。@since 1.5
2、 在执行效率上,StringBuilder > StringBuffer > String
3、 源码体现:本质上都是在调用父类抽象类AbstractStringBuilder来干活,只不过Buffer把代码加了同步关键字,使得程序可以保证线程安全问题。
存在于java.util.Date包。
用来封装一个毫秒值表示一个精确的时间点。
从1970-1-1 0点开始的毫秒值。
new Date();//封装的是系统当前时间的毫秒值
new Date(900000000000L);//封装指定的时间点
getTime();//取内部毫秒值
setTime();//存取内部毫秒值
getMonth();//获取当前月份
getHours();//获取当前小时
compareTo(Date);//当前对象与参数对象比较。当前对象大返回正数,小返回负数,相同0。
概述:日期格式化工具,可以把Date对象格式化成字符串,也可以日期字符串解析成Date对象
格式:yyyy-MM-dd HH:mm:ss MM/dd/yyyy..
format(Date):把Date格式化成字符串
parse(String):把String解析成Date
BigDecimal:常用来解决精确的浮点数运算
BigInteger:常用来解决超大的整数运算
BigDecimal.valueOf(2);
add(BigDecimal bd);//做加法运算
substract(BigDecimal bd);//减法
multiply(BigDecimal bd);//乘法
divide(BigDecimal bd);//除法
divide(BigDecimal bd);//保留位数,舍去方式):除不尽时使用
setScale(保留位数,舍入方式);//同上
pow(int n);//求数据的几次幂
in/out 相对于程序而言的输入(读取)和输出(写出)的过程
字节流:针对二进制文件(字节读写)
InputStream
--FileInputStream
--BufferedInputStream
--ObjectInputStream
OutputStream
--FileOutputStream
--BufferedOutputStream
--ObjectOutputStream
字符流:针对文本文件(字符读写)
数据的读写抽象成数据,在管道中流动。
Ø 流只能单方向流动
Ø 输入流用来读取in
Ø 输出流用来写出Out
Ø 数据只能从头到尾顺序的读写一次
封装一个磁盘路径字符串,对这个路径可以执行一次操作。可以用来封装文件路径、文件夹路径、不存在的路径。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
文件、文件夹属性
length();//文件的字节量
exists();//是否存在,存在返回true
isFile();//是否为文件,是文件返回true
isDirectory();//是否为文件夹,是文件夹返回true
getName();//获取文件/文件夹名
getParent();//获取父文件夹的路径
getAbsolutePath();//获取文件的完整路径
创建、删除
createNewFile(); //新建文件,文件夹不存在会异常,文件已经存在返回false
mkdirs(); //新建多层不存在的文件夹\a\b\c
mkdir(); //新建单层不存在的文件夹\a
delete(); //删除文件,删除空文件夹
文件夹列表
list(); //返回String[] ,包含文件名
listFiles(); //返回File[],包含文件对象
阻塞IO,BIO 就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的有点就是代码比较简单、直观;缺点就是 IO 的效率和扩展性很低,容易成为应用性能瓶颈。
非阻塞IO,NIO 是 Java 1.4 引入的 java.nio 包,提供了 Channel、Selector、Buffer 等新的抽象,可以构建多路复用的、同步非阻塞 IO 程序,同时提供了更接近操作系统底层高性能的数据操作方式。
异步IO,AIO 是 Java 1.7 之后引入的包,是 NIO 的升级版本,提供了异步非堵塞的 IO 操作方式,所以人们叫它 AIO(Asynchronous IO),异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。但目前还不够成熟,应用不多。