java常用方法合集

Arrays工具类

java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比
如排序和搜索)的各种方法。

方法 作用
boolean equals(int[] a,int[] b) 判断两个数组是否相等。
String toString(int[] a) 输出数组信息。
void fill(int[] a,int val) 将指定值填充到数组之中。
void sort(int[] a) 对数组进行排序。
int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值。

Thread类

构造方法

构造方法 作用
Thread() 创建新的Thread对象
Thread(String threadname) 创建线程并指定线程实例名
Thread(Runnable target) 指定创建线程的目标对象,它实现了Runnable接口
Thread(Runnable target, String name) 创建新的Thread对象

Thread类的有关方法

方法 作用
void start() 启动线程,并执行对象的run()方法
run() 线程在被调度时执行的操作
void setName(String name) 设置该线程名称
static Thread currentThread() 返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类
static void yield() 线程让步 暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程 若队列中没有同优先级的线程,忽略此方法
join() 当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止 低优先级的线程也可以获得执行
static void sleep(long millis):(指定时间:毫秒) 令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。抛出InterruptedException异常
stop() 强制线程生命期结束,不推荐使用
boolean isAlive() 返回boolean,判断线程是否还活着
getPriority() 返回线程优先值
setPriority(int newPriority) 改变线程的优先级
thread.setDaemon(true) 可以把一个用户线程变成一个守护线程

Object中关于线程的方法
线程的通信

方法 作用
wait() 令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有权后才能继续执行。
notify() 唤醒正在排队等待同步资源的线程中优先级最高者结束等待
notifyAll () 唤醒正在排队等待资源的所有线程结束等待

这三个方法只有在synchronized方法或synchronized代码块中才能使用,否则会报
java.lang.IllegalMonitorStateException异常。
因为这三个方法必须有锁对象调用,而任意对象都可以作为synchronized的同步锁,
因此这三个方法只能在Object类中声明。

线程池
JDK 5.0起提供了线程池相关API:ExecutorService 和 Executors
ExecutorService:真正的线程池接口。常见子类ThreadPoolExecutor

方法 作用
void execute(Runnable command) 执行任务/命令,没有返回值,一般用来执行Runnable
Future submit(Callable task) 执行任务,有返回值,一般又来执行Callable
void shutdown() 关闭连接池

Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池

方法 作用
Executors.newCachedThreadPool() 创建一个可根据需要创建新线程的线程池
Executors.newFixedThreadPool(n)) 创建一个可重用固定线程数的线程池
Executors.newSingleThreadExecutor() 创建一个只有一个线程的线程池
Executors.newScheduledThreadPool(n) 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行

String类

String常用方法

方法 作用
int length() 返回字符串的长度: return value.length
char charAt(int index)) 返回某索引处的字符return value[index]
boolean isEmpty() 判断是否是空字符串:return value.length == 0
String toLowerCase() 使用默认语言环境,将 String 中的所有字符转换为小写
String toUpperCase() 使用默认语言环境,将 String 中的所有字符转换为大写
char charAt(int index)) 返回某索引处的字符return value[index]
String trim() 返回字符串的副本,忽略前导空白和尾部空白
boolean equals(Object obj) 比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString) 与equals方法类似,忽略大小写
String concat(String str) 将指定字符串连接到此字符串的结尾。 等价于用“+”
int compareTo(String anotherString)) 比较两个字符串的大小
String substring(int beginIndex) 返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串
String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串
boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix)) 测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset) 测试此字符串从指定索引开始的子字符串是否以指定前缀开始
boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true
int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str, int fromIndex)) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引 indexOf和lastIndexOf方法如果未找到都是返回-1
int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replace(CharSequence target, CharSequence replacement) 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串
String replaceAll(String regex, String replacement)) 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串
String replaceFirst(String regex, String replacement) 返回指定子字符串在此字符串中最右边出现处的索引 indexOf和lastIndexOf方法如果未找到都是返回-1
boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式
String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串
String[] split(String regex, int limit)) 根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中

String与基本数据类型转换

方法 作用
public static int parseInt(String s) 可以将由“数字”字符组成的字符串转换为整型
public String valueOf(int n) 可将int型转换为字符串

String与字符数组转换
字符数组 -->字符串

方法 作用
String(char[]) String 类的构造器 用字符数组中的全部字符创建字符串对象
String(char[],int offset,intlength) String 类的构造器 用字符数组中的部分字符创建字符串对象
String(byte[]) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String
String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象

字符串 --> 字节数组

方法 作用
public char[] toCharArray() 将字符串中的全部字符存放在一个字符数组中的方法
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 提供了将指定索引范围内的字符串存放到数组中的方法
public byte[] getBytes() 使用平台的默认字符集将此 String 编码为byte 序列,并将结果存储到一个新的 byte 数组中
public byte[] getBytes(String charsetName) 使用指定的字符集将 此 String 编码到 byte 序列,并将结果存储到新的 byte 数组

StringUtils工具类

方法 作用
public static boolean isEmpty(String str) 判空 return str == null
public static boolean isBlank(String str) 判断更严谨,包含的有空串("")、空白符(空格""," “,制表符”\t",回车符"\r","\n"等)以及null值;
public static boolean isNotEmpty(String str) return !StringUtils.isEmpty(str);
public static boolean isNotBlank(String str) return !StringUtils.isBlank(str);
public static String capitalize(String str) 首字母大写
public static String uncapitalize(String str) 首字母小写
StringUtils.remove(String str, char remove) 移除单个字符
StringUtils.remove(String str, String remove) 移除单个字符
public static String deleteWhitespace(String str) 去除所有空白符
public static String trimToEmpty(String str) 先trim,如果为null,返回空字符串
public static String trimToNull(String str) 先trim,如果为空,返回null
StringUtils.strip("[asdf]", “[]”) strip最常用的一个方法就是去掉前后面匹配的符号,这个应用广泛

StringBuffer类

方法 作用
StringBuffer() 初始容量为16的字符串缓冲区
StringBuffer(int size) 构造指定容量的字符串缓冲区
StringBuffer(String str) 将内容初始化为指定字符串内容
StringBuffer delete(int start,int end) 删除指定位置的内容
StringBuffer replace(int start, int end, String str) 把[start,end)位置替换为str
StringBuffer(int size) 构造指定容量的字符串缓冲区
StringBuffer insert(int offset, xxx) 在指定位置插入xxx
StringBuffer reverse() 把当前字符序列逆转
public int indexOf(String str)
public int length()
public String substring(int start,int end)
public char charAt(int n )
public void setCharAt(int n ,char ch)

StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且
提供相关功能的方法也一样

日期时间API
后续补上

System类

System类
成员变量

  • System类内部包含in、out和err三个成员变量,分别代表标准输入流
    (键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
方法 作用
native long currentTimeMillis() 该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
void exit(int status) 该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等
void gc() 该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况
String getProperty(String key) 该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示

Math类

Math类

方法 作用
abs 绝对值
acos,asin,atan,cos,sin,tan 三角函数
sqrt 平方根
pow(double a,doble b) a的b次幂
log 自然对数
exp e为底指数
max(double a,double b) 最大数
min(double a,double b) 最小数
random() 返回0.0到1.0的随机数
long round(double a) double型数据a转换为long型(四舍五入)

BigInteger类

BigInteger类

  • Integer类作为int的包装类,能存储的最大整型值为2
    31-1,Long类也是有限的,
    最大为2
    63-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类
    都无能为力,更不用说进行运算了。
  • java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供
    所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。
    另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、
    位操作以及一些其他操作。
  • 构造器 --> BigInteger(String val):根据字符串构建BigInteger对象
方法 作用
public BigInteger abs() 返回此 BigInteger 的绝对值的 BigInteger
BigInteger add(BigInteger val) 返回其值为 (this + val) 的 BigInteger
BigInteger subtract(BigInteger val) 返回其值为 (this - val) 的 BigInteger
BigInteger multiply(BigInteger val) 返回其值为 (this * val) 的 BigInteger
BigInteger divide(BigInteger val) 返回其值为 (this / val) 的 BigInteger。整数相除只保留整数部分
BigInteger remainder(BigInteger val) 返回其值为 (this % val) 的 BigInteger
BigInteger[] divideAndRemainder(BigInteger val) 返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组
BigInteger pow(int exponent) 返回其值为 (thisexponent) 的 BigInteger

BigDecimal类
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,
要求数字精度比较高,故用到java.math.BigDecimal类。

  • BigDecimal类支持不可变的、任意精度的有符号十进制定点数。
  • 构造器
  1. public BigDecimal(double val)
  2. public BigDecimal(String val)
  • 常用方法
  1. public BigDecimal add(BigDecimal augend)
  2. public BigDecimal subtract(BigDecimal subtrahend)
  3. public BigDecimal multiply(BigDecimal multiplicand)
  4. public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

Collection 接口

Collection 接口方法

方法 作用
add(Object obj) 添加单个元素
addAll(Collection coll) 添加集合元素
int size() 获取有效元素的个数
void clear() 清空集合
boolean isEmpty() 是否是空集合
boolean contains(Object obj) 是通过元素的equals方法来判断是否是同一个对象
boolean containsAll(Collection c) 也是调用元素的equals方法来比较的。拿两个集合的元素挨个比较
boolean remove(Object obj) 通过元素的equals方法判断是否是要删除的那个元素。只会删除找到的第一个元素
boolean removeAll(Collection coll) 取当前集合的差集
boolean retainAll(Collection c) 把交集的结果存在当前集合中,不影响c
boolean equals(Object obj) 集合是否相等
Object[] toArray() 转成对象数组
hashCode() 获取集合对象的哈希值
iterator() 返回迭代器对象,用于集合遍历

List接口

List接口方法

方法 作用
void add(int index, Object ele) 在index位置插入ele元素
boolean addAll(int index, Collection eles) 从index位置开始将eles中的所有元素添加进来
Object get(int index) 获取指定index位置的元素
int indexOf(Object obj) 返回obj在集合中首次出现的位置
int lastIndexOf(Object obj) 返回obj在当前集合中末次出现的位置
Object remove(int index) 移除指定index位置的元素,并返回此元素
Object set(int index, Object ele) 设置指定index位置的元素为ele
List subList(int fromIndex, int toIndex) 返回从fromIndex到toIndex位置的子集合

ArrayList类

List实现类之一:ArrayList

  • ArrayList 是 List 接口的典型实现类、主要实现类
  • 本质上,ArrayList是对象引用的一个”变长”数组
  • ArrayList的JDK1.8之前与之后的实现区别?
  1. JDK1.7:ArrayList像饿汉式,直接创建一个初始容量为10的数组
  2. JDK1.8:ArrayList像懒汉式,一开始创建一个长度为0的数组,当添加第一个元素时再创建一个始容量为10的数组
    Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 实例,也不是
    Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合

LinkedList类

LinkedList类方法

方法 作用
void addFirst(Object obj) 添加首个元素
void addLast(Object obj) 添加末尾元素
Object getFirst() 返回首个元素
Object getLast() 返回末尾元素
Object removeFirst() 移除首个元素
Object removeLast() 移除末尾元素

Vector类

Vector类方法
Vector总是比ArrayList慢,所以尽量避免使用
新增方法:

  • void addElement(Object obj)
  • void insertElementAt(Object obj,int index)
  • void setElementAt(Object obj,int index)
  • void removeElement(Object obj)
  • void removeAllElements()

Set 接口

  • Set接口是Collection的子接口,set接口没有提供额外的方法
  • Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个
    Set 集合中,则添加操作失败。
  • Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals() 方法

HashSet类

Set实现类之一:HashSet

  • HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。
  • HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取、查找、删除性能。
  • HashSet 具有以下特点:
  1. 不能保证元素的排列顺序
  2. HashSet 不是线程安全的
  3. 集合元素可以是 null
  • HashSet 集合判断两个元素相等的标准:两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。
  • 对于存放在Set容器中的对象,对应的类一定要重写equals()和hashCode(Object obj)方法,以实现对象相等规则。即:“相等的对象必须具有相等的散列码”。

LinkedHashSet类

Set实现类之二:LinkedHashSet

  • LinkedHashSet 是 HashSet 的子类
  • LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
  • LinkedHashSet插入性能略低于 HashSet,但在迭代访问 Set 里的全部元素时有很好的性能。
  • LinkedHashSet 不允许集合元素重复。

TreeSet类

Set实现类之三:TreeSet

  • TreeSet 是 SortedSet 接口的实现类,TreeSet 可以确保集合元素处于排序状态。
  • TreeSet底层使用红黑树结构存储数据
  • 新增的方法如下: (了解)
  1. Comparator comparator()
  2. Object first()
  3. Object last()
  4. Object lower(Object e)
  5. Object higher(Object e)
  6. SortedSet subSet(fromElement, toElement)
  7. SortedSet headSet(toElement)
  8. SortedSet tailSet(fromElement)
  • TreeSet 两种排序方法:自然排序和定制排序。默认情况下,TreeSet 采用自然排序。

Map接口

Map接口常用方法
添加、删除、修改操作:

方法 作用
Object put(Object key,Object value) 将指定key-value添加到(或修改)当前map对象中
void putAll(Map m) 将m中的所有key-value对存放到当前map中
Object remove(Object key) 移除指定key的key-value对,并返回value
void clear() 清空当前map中的所有数据

元素查询的操作:

方法 作用
Object get(Object key) 获取指定key对应的value
boolean containsKey(Object key) 是否包含指定的key
boolean containsValue(Object value) 是否包含指定的value
int size() 返回map中key-value对的个数
boolean isEmpty() 判断当前map是否为空
boolean equals(Object obj) 判断当前map和参数对象obj是否相等

元视图操作的方法:

方法 作用
Set keySet() 返回所有key构成的Set集合
Collection values() 返回所有value构成的Collection集合
Set entrySet() 返回所有key-value对构成的Set集合

Collections工具类

  • Collections 是一个操作 Set、List 和 Map 等集合的工具类
  • Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,
    还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
    排序操作:(均为static方法)
方法 作用
reverse(List) 反转 List 中元素的顺序
shuffle(List) 对 List 集合元素进行随机排序
sort(List) 根据元素的自然顺序对指定 List 集合元素按升序排序
sort(List,Comparator) 根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap(List,int, int) 将指定 list 集合中的 i 处元素和 j 处元素进行交换

Collections常用方法

方法 作用
Object max(Collection) 根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator) 根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection) 集合中最小元素(自然排序)
Object min(Collection,Comparator) 集合中最小元素(定制排序)
int frequency(Collection,Object) 返回指定集合中指定元素的出现次数
void copy(List dest,List src) 将src中的内容复制到dest中
boolean replaceAll(List list,Object oldVal,Object newVal) 使用新值替换List 对象的所有旧值

File 类

File 类的使用:常用构造器

方法 作用
public File(String pathname) 以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。(1. 绝对路径:是一个固定的路径,从盘符开始) (2. 相对路径:是相对于某个位置开始)
public File(String parent,String child) 以parent为父路径,child为子路径创建File对象
public File(File parent,String child) 根据一个父File对象和子文件路径创建File对象

public static final String separator。根据操作系统,动态的提供分隔符。

File 类的使用:常用方法
File类的获取功能

方法 作用
public String getAbsolutePath() 获取绝对路径
public String getPath() 获取路径
public String getName() 获取名称
public String getParent() 获取上层文件目录路径。若无,返回null
public long length() 获取文件长度(即:字节数)。不能获取目录的长度
public long lastModified() 获取最后一次的修改时间,毫秒值
public String[] list() 获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() 获取指定目录下的所有文件或者文件目录的File数组

File类的重命名功能

方法 作用
public boolean renameTo(File dest) 把文件重命名为指定的文件路径

File类的判断功能

方法 作用
public boolean isDirectory() 判断是否是文件目录
public boolean isFile() 判断是否是文件
public boolean exists() 判断是否存在
public boolean canRead() 判断是否可读
public long length() 获取文件长度(即:字节数)。不能获取目录的长度
public boolean canWrite() 判断是否可写
public boolean isHidden() 判断是否隐藏

File类的创建功能

方法 作用
public boolean createNewFile() 创建文件。若文件存在,则不创建,返回false
public boolean mkdir() 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() 创建文件目录。如果上层文件目录不存在,一并创建

注意事项:
如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目
路径下。

File类的删除功能

方法 作用
public boolean delete() 删除文件或者文件夹

删除注意事项:
Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录

InputStream类

InputStream类常用方法

方法 作用
int read() 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1
int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。否则以整数形式返回实际读取的字节数
int read(byte[] b, int off,int len) 将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值 -1
public void close() throws IOException 关闭此输入流并释放与该流关联的所有系统资源

Reader类

Reader类常用方法

方法 作用
int read() 读取单个字符。作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff)(2个字节的Unicode码),如果已到达流的末尾,则返回 -1
int read(char[] cbuf) 将字符读入数组。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数
int read(char[] cbuf,int off,int len) 将字符读入数组的某一部分。存到数组cbuf中,从off处开始存储,最多读len个字符。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数
public void close() throws IOException 关闭此输入流并释放与该流关联的所有系统资源

OutputStream类

OutputStream类常用方法

方法 作用
void write(int b) 将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。 即写入0~255范围的
void write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。write(b) 的常规协定是:应该与调用 write(b, 0, b.length) 的效果完全相同
void write(byte[] b,int off,int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
public void flush()throws IOException 刷新此输出流并强制写出所有缓冲的输出字节,调用此方法指示应将这些字节立即写入它们预期的目标
public void close() throws IOException 关闭此输出流并释放与该流关联的所有系统资源

Writer类

Writer类常用方法

方法 作用
void write(int c) 写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。 即写入0 到 65535 之间的Unicode码
void write(char[] cbuf) 写入字符数组
void write(char[] cbuf,int off,int len) 写入字符数组的某一部分。从off开始,写入len个字符
void write(String str) 写入字符串
void write(String str,int off,int len) 写入字符串的某一部分
void flush() 刷新该流的缓冲,则立即将它们写入预期目标
public void close() throws IOException 关闭此输出流并释放与该流关联的所有系统资源

节点流(或文件流)
读取文件 :
1.建立一个流对象,将已存在的一个文件加载进流。
FileReader fr = new FileReader(new File(“Test.txt”));
2.创建一个临时存放数据的数组。
char[] ch = new char[1024];
3.调用流对象的读取方法将流中的数据读入到数组中。
fr.read(ch);
4. 关闭资源。
fr.close();

FileReader fr = null;
try {
    fr = new FileReader(new File("c:\\test.txt"));
    char[] buf = new char[1024];
    int len;
    while ((len = fr.read(buf)) != -1) {
        System.out.print(new String(buf, 0, len));
    }
} catch (IOException e) {
    System.out.println("read-Exception :" + e.getMessage());
} finally {
    if (fr != null) {
        try {
            fr.close();
        } catch (IOException e) {
            System.out.println("close-Exception :" + e.getMessage());
        }
    }
}

写入文件 :
1.创建流对象,建立数据存放文件
FileWriter fw = new FileWriter(new File(“Test.txt”));
2.调用流对象的写入方法,将数据写入流
fw.write(“atguigu-songhongkang”);
3.关闭流资源,并将流中的数据清空到文件中。
fw.close();

FileWriter fw = null;
try {
    fw = new FileWriter(new File("Test.txt"));
    fw.write("atguigu-songhongkang");
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (fw != null)
        try {
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

转换流

转换流构造方法

方法 作用
public InputStreamReader(InputStream in) 将InputStream转换为Reader
public InputSreamReader(InputStream in,String charsetName) 按指定编码将InputStream转换为Reader
public OutputStreamWriter(OutputStream out) 将Writer转换为OutputStream
public OutputSreamWriter(OutputStream out,String charsetName) 按指定编码将Writer转换为OutputStream

Path类

Path 常用方法

方法 作用
String toString() 返回调用 Path 对象的字符串表示形式
boolean startsWith(String path) 判断是否以 path 路径开始
boolean endsWith(String path) 判断是否以 path 路径结束
boolean isAbsolute() 判断是否是绝对路径
Path getParent() 返回Path对象包含整个路径,不包含 Path 对象指定的文件路径
Path getRoot() 返回调用 Path 对象的根路径
Path getFileName() 返回与调用 Path 对象关联的文件名
int getNameCount() 返回Path 根目录后面元素的数量
Path getName(int idx) 返回指定索引位置 idx 的路径名称
Path toAbsolutePath() 作为绝对路径返回调用 Path 对象
Path resolve(Path p) 合并两个路径,返回合并后的路径对应的Path对象
File toFile() 将Path转化为File类的对象

Files 类

Files 类常用方法
java.nio.file.Files 用于操作文件或目录的工具类

方法 作用
Path copy(Path src, Path dest, CopyOption … how) 文件的复制
Path createDirectory(Path path, FileAttribute … attr) 创建一个目录
Path createFile(Path path, FileAttribute … arr) 创建一个文件
void delete(Path path) 删除一个文件/目录,如果不存在,执行报错
void deleteIfExists(Path path) Path对应的文件/目录如果存在,执行删除
Path move(Path src, Path dest, CopyOption…how) 将 src 移动到 dest 位置
long size(Path path) 返回 path 指定文件的大小

Files常用方法:用于判断

方法 作用
boolean exists(Path path, LinkOption … opts) 判断文件是否存在
boolean isDirectory(Path path, LinkOption … opts) 判断是否是目录
boolean isRegularFile(Path path, LinkOption … opts) 判断是否是文件
boolean isHidden(Path path) 判断是否是隐藏文件
boolean isReadable(Path path) 判断文件是否可读
boolean isWritable(Path path) 判断文件是否可写
boolean notExists(Path path, LinkOption … opts) 判断文件是否不存在

Files常用方法:用于操作内容

方法 作用
SeekableByteChannel newByteChannel(Path path, OpenOption…how) 获取与指定文件的连接,how 指定打开方式
DirectoryStream newDirectoryStream(Path path) 打开 path 指定的目录
InputStream newInputStream(Path path, OpenOption…how) 获取 InputStream 对象
OutputStream newOutputStream(Path path, OpenOption…how) 获取 OutputStream 对象

流 (Stream)

Stream 的中间操作
1.筛选与切片

方法 作用
filter(Predicate p p) ) 接收 Lambda , 从流中排除某些元素
distinct() 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素
limit(long maxSize) 截断流,使其元素不超过给定数量
skip(long n) 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补

2.映射

方法 作用
map(Function f) 接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
mapToDouble(ToDoubleFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 DoubleStream
mapToInt(ToIntFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream
mapToLong(ToLongFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 LongStream
flatMap(Function f) 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流

3.排序

方法 作用
sorted() 产生一个新流,其中按自然顺序排序
sorted(Comparator comp) 产生一个新流,其中按比较器顺序排序

Stream 的终止操作
1.查找与匹配

方法 作用
allMatch(Predicate p) 检查是否匹配所有元素
anyMatch( (Predicate p) ) 检查是否至少匹配一个元素
noneMatch(Predicate p) 检查是否没有匹配所有元素
findFirst() 返回第一个元素
findAny() 返回当前流中的任意元素
count() 返回流中元素总数
max(Comparator c c) ) 返回流中最大值
min(Comparator c c) ) 返回流中最小值
forEach(Consumer c c) ) 内部迭代( (用 使用 Collection 接口需要用户去做迭代,称为 外部迭代 。相反, Stream API 使用内部迭代——它帮你把迭代做了

2.归约

方法 作用
reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 T
reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 Optional

3.收集

方法 作用
collect(Collector c) 将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法

Collector 接口中方法的实现决定了如何对流执行收集操作(如收集到 List、Set、Map)。但是 Collectors 实用类提供了很多静态方法,可以方便地创建常见收集器实例,具体方法与实例如下表:

方法 作用
List emps= list.stream().collect(Collectors.toList()) 把流中元素收集到List
Set emps= list.stream().collect(Collectors.toSet()) 把流中元素收集到Set
Collectionemps=list.stream().collect(Collectors.toCollection(ArrayList::new)) 把流中元素收集到创建的集合
long count = list.stream().collect(Collectors.counting()) 计算流中元素的个数
inttotal=list.stream().collect(Collectors.summingInt(Employee::getSalary)) 对流中元素的整数属性求和
doubleavg= list.stream().collect(Collectors.averagingInt(Employee::getSalary)) 计算流中元素Integer属性的平均值
IntSummaryStatisticsiss= list.stream().collect(Collectors.summarizingInt(Employee::getSalary)) 收集流中Integer属性的统计值。如:平均值
String str= list.stream().map(Employee::getName).collect(Collectors.joining()) 连接流中每个字符串
Optionalmax= list.stream().collect(Collectors.maxBy(comparingInt(Employee::getSalary))) 根据比较器选择最大值
Optional min = list.stream().collect(Collectors.minBy(comparingInt(Employee::getSalary))) 根据比较器选择最小值
inttotal=list.stream().collect(Collectors.reducing(0, Employee::getSalar, Integer::sum)) 从一个作为累加器的初始值开始,利用BinaryOperator与流中元素逐个结合,从而归约成单个值
inthow= list.stream().collect(Collectors.collectingAndThen(Collectors.toList(), List::size)) 包裹另一个收集器,对其结果转换函数
Map map= list.stream().collect(Collectors.groupingBy(Employee::getStatus)) 根据某属性值对流分组,属性为K,结果为V
Mapvd= list.stream().collect(Collectors.partitioningBy(Employee::getManage)) 根据true或false进行分区

Optional 类

Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常

方法 作用
Optional.of(T t) 创建一个 Optional 实例
Optional.empty() 创建一个空的 Optional 实例
Optional.ofNullable(T t) 若 t 不为 null,创建 Optional 实例,否则创建空实例
isPresent() 判断是否包含值
orElse(T t) 如果调用对象包含值,返回该值,否则返回t
orElseGet(Supplier s) 如果调用对象包含值,返回该值,否则返回 s 获取的值
map(Function f) 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
flatMap(Function mapper) 与 map 类似,要求返回值必须是Optional

还有方法后续补充

你可能感兴趣的:(javaSE常用方法)