导读
1.简介
2.Math类
3.String类
4.Random类
5.StringBuffer与StringBuilder类
6.Date类(util)
7.Calendar类
8.Collection接口
9.Iterator接口
- ListIterator接口
10.Comparable接口
12.Collections类
13.Comparator接口
14.Map接口
15.Thread类
16.File类
简介
java工具类原码查看方法:
(1)官网
(2)jdk-> src->src.zip
(3)eclipse command+单机 跳转到源码
Math类
->java.lang(默认)
Math类的函数都是静态的
/*
求绝对值
a可以是int, long, float, double
@return 与a相同类型
*/
Math.abs(a)
/*
天花板数 ,向上取整
a是double
@return 与a相同类型 double
*/
Math.ceil(a)
/*
地板数, 向下取整
a是double
@return 与a相同类型 double
*/
Math.floor(a)
/*
求最大最小值
a,b可以是int, long, float, double
@return 与a,b相同类型
*/
Math.max(a,b) Math.min(a,b)
/*
求a的b次方
a,b 是double
@return double
*/
Math.pow(a,b)
/*
四舍五入
a是float,double
@return float->int double->long
*/
Math.round(a)
/*
产生随机数【0,1)
@return double
*/
Math.random()
//产生【0,10】(0~10)
System.out.println((int)(Math.random()*11));
//产生【5,10】(5~10)
System.out.println((int)(Math.random()*6+5));
String类
->java.lang
String value;
/*
(非静态)返回索引处的char值
index int
@return char
*/
value.charAt(index);
/*
(非静态) 将参数字符串连接到对象后边并返回新的字符串,原字符串没有变化
string String
@return String
*/
value.concat(String string);
/*
1.(非静态)判断对象是否包含参数字符串
2.string CharSequence
->CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。
CharSequence是实现这个接口的实例 举例: CharSequence str = "dd"; 就是 CharSequence str = new String("dd");
CharSequence是封装好的类
这是一个接口,代表的是一个有序字符集合,这个接口包含的方法有:charAt(int index),toString(),length(),subSequence(int start,int end).
这里需要说的一点就是,对于一个抽象类或者是接口类,不能使用new来进行赋值,但是可以通过以下的方式来进行实例的创建:
CharSequence cs="hello";
但是不能这样来创建:
CharSequence cs=new CharSequence("hello");
3.@return boolean
*/
value.contains(string);
/*
1.(非静态)判断字符串是否以参数字符串结尾或开头
2.string String
3.@return boolean
*/
value.endsWith(string);
value.startsWith(string);
/*
1.(非静态)字符串长度
2.@return int
*/
value.length();
/*
1.(非静态)判断与参数内容是否相等
2.string Object
3.@return boolean
*/
value.equals(string);
/*
1.(非静态)寻找匹配串的第一次或最后一次出现位置索引
2.string String,char,int
3.@return int
*/
value.indexOf(string);
value.lastIndexOf(string);
/*
1.(非静态)从指定位置开始找匹配串第一次出现的位置索引
2.(1)string String,char,int (2)from Index int
3.@return int
*/
value.indexOf(string,fromIndex);
value.lastIndexOf(string,fromIndex);
/*
1.(非静态)字符串是否为空
2.@return boolean
*/
value.isEmpty();
/*
1.(非静态)将对象字符串中old替换为new,并输出,原字符串不变
2.(1)old char,CharSequence (2)new char,CharSequence
3.@return String
*/
value.replace(old,new);
/*
1.(非静态)将字母转化为小写或大写
2.@return String
*/
value.toLowCase();
value.toUpprCase();
/*
1.(非静态)忽略大小写的字符串比较
2.string String
3.@return boolean
*/
value.equalsIgnoreCase(string);
/*
1.(非静态)按照给定的字符串拆分对象字符串
eg: string= hellowefjworld ,结果:hello efj orld
2.string String
3.@return String[]
*/
value.split(string);
/*
1.(非静态)去掉对象字符串的前导空白和尾部空白
eg: value=" hellow world " 结果为“hello world”
2.@return String
*/
value.trim();
/*
1.(非静态)把字符串转化为数组
2.@return char[]
*/
value.toCharArray();
/*
1.(静态)把其他类型转化为字符串类型
2.string boolean,int,long,double,float,char,char[],object
除了这个方法,将基本类型转为字符串还可以如下操作:
String value=num+"";
3.@return String
*/
String.valueOf(string);
/*
返回一个子字符串【beginIndex,endIndex)或者从beginIndex到最后
*/
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
Random类
->java.util
Random类比Math.random更专业
(非静态)
/*
两个构造方法,区别是无参的每次生成都随机。
而有参的,按照一定算法得出如下可以看出差别
Random r=new Random();
Random r=new Random(3);
*/
Random();
Random(long seed);
/*
package HomeWork;
import java.util.Random;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method
Random s=new Random(3);
//Random s=new Random();
for(int i=0;i<10;i++){
System.out.println(s.nextInt(6)+5);
//产生【5,10】
}
System.out.println(s.nextInt(6)+5);
System.out.println(s.nextInt(6)+5);
}
}
有参的执行结果(3次):
775655896689
775655896689
775655896689
无参的执行结果(3次):
789786777976
78869105710767
6109897855758
*/
/*
产生与返回类型相应的随机数
其中
nextInt(int bound)
产生【0,bound)的整数
*/
boolean nextBoolean()
double nextDouble()
float nextFloat()
int nextInt()
int nextInt(int bound)
long nextLong()
StringBuffer与StringBuilder类
->java.lang
//StringBuffer与StringBuilder的区别就是如上,API相同,认识一个即可类推
//String可以用的方法,StringBuffer和StringBuilder也可以用,用法相同,不再赘述
(非静态)
/*
在StringBuilder/StringBuffer后加上一个其他类型的参数
*/
StringBuilder append(boolean b)
StringBuilder append(char c)
StringBuilder append(char[] str)
StringBuilder append(char[] str, int offset, int len)
StringBuilder append(double d)
StringBuilder append(float f)
StringBuilder append(int i)
StringBuilder append(long lng)
StringBuilder append(CharSequence s)
StringBuilder append(CharSequence s, int start, int end)
StringBuilder append(Object obj)
StringBuilder append(String str)
StringBuilder append(StringBuffer sb)
StringBuilder appendCodePoint(int codePoint)
/*
与String的同名方法用法相同
*/
char charAt(int index)
/*
删除【start,end)
*/
StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)
/*
与String类中同名方法用法相同
*/
int indexOf(String str)
int indexOf(String str, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
/*
插入
插入到offset的位置,即3就插到第3个位置,从0开始
*/
StringBuilder insert(int offset, boolean b)
StringBuilder insert(int offset, char c)
StringBuilder insert(int offset, char[] str)
StringBuilder insert(int index, char[] str, int offset, int len)
StringBuilder insert(int offset, double d)
StringBuilder insert(int offset, float f)
StringBuilder insert(int offset, int i)
StringBuilder insert(int offset, long l)
StringBuilder insert(int dstOffset, CharSequence s)
StringBuilder insert(int dstOffset, CharSequence s, int start, int end)
StringBuilder insert(int offset, Object obj)
StringBuilder insert(int offset, String str)
/*
修改
把【start,end)修改为 str
*/
StringBuilder replace(int start, int end, String str)
Date类(util)
->java.util
Date类表示特定的瞬间,精确到毫秒
(非静态)
/*
构造方法
year=现在-1900
month=[0,11)
*/
Date()
Date(int year, int month, int date) //弃用
Date(int year, int month, int date, int hrs, int min) //弃用
Date(int year, int month, int date, int hrs, int min, int sec) //弃用
Date(long date)
Date(String s)//弃用
/*
返回相对于1970年起始点经历的毫秒
*/
long getTime()
/*
Day是指星期几
*/
int getDate() //弃用
int getDay() //弃用
int getHours() //弃用
int getMinutes() //弃用
int getMonth() //弃用
int getSeconds()//弃用
/*
是否在给定日期之后/之前
*/
boolean after(Date when)
boolean before(Date when)
/*
日期格式化 日期与String互相转化
在API查询一个类 SimpleDateFormat
format() Date->String
parse() String->Date
用parse时要注意String格式要严格与定好的相同
*/
SimpleDateFormat aa=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date=new Date();
String str=aa.format(date);
Date date1=aa.parse(str);
Calendar类
->java.util
抽象类
Calendar比Date更加强大,所以Date许多方法都不用了
/*
获取Calendar类型的实例
Calendar c=Calendar.getInstance();
*/
static Calendar getInstance()
/*
获取方法,如下穿參有许多常量,这些常量在get同一API文档可以查到Field表
System.out.println(c.get(Calendar.DATE));
*/
int get(int field)
/*
为字段设置值
c.set(Calendar.YEAR, 2018);
*/
void set(int field, int value)
/*
获得当下时间环境的最大/最小值
如求当年当月的最大天数
*/
int getActualMaximum(int field)
int getActualMinimum(int field)
/*
可以调整变量的值
*/
abstract void add(int field, int amount)
Collection接口
->java.util
/*
添加一个元素/元素的集合
*/
boolean add(E e)
boolean addAll(Collection<? extends E> c)
/*
清空集合,但是集合本身还在
*/
void clear()
/*
检查集合中是否包含某个元素/元素的集合
*/
boolean contains(Object o)
boolean containsAll(Collection<?> c)
/*
判断此集合是否为空
*/
boolean isEmpty()
/*
返回此集合的哈希码值(映射地址)
*/
int hashCode()
/*
移除一个元素/元素的集合
*/
boolean remove(Object o)
boolean removeAll(Collection<?> c)
/*
仅保留包含在两个Collection共有的元素
*/
boolean retainAll(Collection<?> c)
/*
返回集合中元素的个数
*/
int size()
/*
将集合转化为数组
*/
Object[] toArray()
<T> T[] toArray(T[] a)
Iterator接口
->java.util
⚠️实现Iterator接口的类可以用迭代器
⚠️实现Iterator接口的类可以用for each循环,其本质还是用了迭代器
ListIterator接口
->java.util
继承Iterator
void add(E e)
//在当前位置添加元素
boolean hasNext()
//是否有下一个
boolean hasPrevious()
//是否有上一个
E next()
//下一个
int nextIndex()
//下一个的下标
E previous()
//上一个·
int previousIndex()
//上一个的下标
void remove()
//删除并返回
void set(E e)
//修改
Comparable接口
Collections类
->java.util
Comparator接口
->java.util
Map接口
->java.util
Thread类
->java.lang
/*
构造方法
*/
Thread()
Thread(Runnable target)
Thread(Runnable target, String name)
Thread(String name)
/*
获取线程名称的方法
*/
String getName()
/*
实现Runnable接口要用此方法
如
Thread.currentThread().getName();
Thread.currentThread().yield();
*/
static Thread currentThread()
/*
设置线程名称的方法
*/
void setName(String name)
/*
已指定毫秒数让正在执行的线程停止,到时自动醒来
*/
static void sleep(long millis)
/*
设置线程优先级/返回线程优先级(1~10)
MAX_PRIORITY(10)
MIN_PRIORITY(1)
NORM_PRIORITY(5)
*/
void setPriority(int newPriority)
int getPriority()
/*
让出cpu的本次调度,让cpu重新调度,但重新调度仍然有可能被调度
*/
static void yield()
/*
检查线程是否处于活着的状态
*/
boolean isAlive()
/*
调用该方法的线程可以先运行,终止后其他线程运行
*/
void join()
void join(long millis)
/*
(已禁用)可以简单粗暴结束线程,不建议使用
*/
void stop()
/*
终止处于阻塞状态的线程
*/
void interrupt()
File类
->java.io
利用File类无法读写文件,但可以创建,删除文件
/*
构造方法
1.通过给定文件路径名的字符串来创建实例,这个文件路径名要一直包括到文件自己(含后缀)
2.根据parent和child路径拼接起来创建
3.可以传一个文件夹的路径(以File形式),然后加这个文件
4.传URI路径
*/
File(String pathname)
File(String parent, String child)
File(File parent, String child)
File(URI uri)
/*
检查文件对象存不存在
*/
boolean exists()
/*
检查创建文件时是否提供的绝对路径
绝对路径:从根路径开始写的
相对路径:相对于某个路径的路径
在源码中直接写文件名,就是默认相对于项目路径的一个路径
*/
boolean isAbsolute()
/*
获取文件的绝对路径
*/
String getAbsolutePath()
/*
获取文件路径(创建时给的啥路径就返回啥路径)
*/
String getPath()
/*
获取文件名/文件夹的名字,带后缀
*/
String getName()
/*
获取其上一级的路径
*/
String getParent()
/*
获取其上一级的路径并将它返回为一个新的文件对象
*/
File getParentFile()
/*
检验对象是一个目录(文件夹)/一个文件
*/
boolean isDirectory()
boolean isFile()
/*
文件内容的长度 字节数(一个字母占一个字节 换行占两个字节)
*/
long length()
/*
检查文件是否可以执行/读/写
*/
boolean canExecute()
boolean canRead()
boolean canWrite()
/*
1.创建文件夹,这个文件夹不存在,但其父路径存在
2.创建文件夹,其和其父路径都不存在,一并创建(推荐使用)
实例见下图
*/
boolean mkdir()
boolean mkdirs()
/*
创建文件
实例见下图
*/
boolean createNewFile()
/*
删除文件/文件夹
如果删除文件夹,那么这个文件夹必须为空才能删除
*/
boolean delete()
/*
获取文件夹所包含的文件或文件夹
*/
File[] listFiles()
创建文件/文件夹:
删除文件/文件夹: