Java API
API(Application Programming Interface)是指应用程序编程接口,的JavaAPI是指JDK提供的各种功能的Java类
String类
String类的初始化:
(1)使用字符串常量直接初始化
初始化:String str = "absdefj";
(2)使用构造方法初始化
方法声明 | 功能描述 |
String() | 创建一个内容为空的字符串 |
String(String value) | 根据指定的字符串内容创建对象 |
String(char[] value) | 根据指定的字符数组创建对象 |
String(byte[] bytes) | 根据指定的字节数组创建对象 |
public class Test {
public static void main (String[] args) throws Exception{
String str1 = new String();
String str2 = new String("abcd");
char[] charStr = new char[] {'D', 'E', 'F'};
String str3 = new String(charStr);
byte[] byteStr = {39, 45, 62};
String str4 = new String(byteStr);
}
}
String类的常用操作
方法声明 | 功能描述 |
int indexOf(intch) | 返回指定字符ch在字符串中第一次出现位置的索引 |
int lastIndexOf(int ch) | 返回指定字符ch在字符串中最后一次出现位置的索引 |
int indexOf(String str) | 返回指定子字符串str在字符串第一次出现位置的索引 |
int lastIndexOf(String str) | 返回指定子字符串str在此字符串中最后一次出现位置的索引 |
char charAt(int index) | 返回字符串中index位置上的字符,其中index的取值范围是0~(字符串长度-1) |
Boolean endsWith(String suffix) | 判断此字符串是否以指定的字符串结尾 |
int length() | 返回此字符串的长度 |
boolean equals(Object anObject) | 将此字符串与指定的字符串比较 |
boolean isEmpty() | 判断字符串长度是否为0,如果为0,则返回true;反之,则返回false |
boolean startsWith(String prefix) | 判断此字符串是否以指定的字符串开始 |
boolean contains(CharSequencecs) | 判断此字符串中是否包含指定的字符序列 |
String toLowerCase() | 使用默认语言环境的规则将String中的所有字符都转换为小写字母 |
String toUpperCase() | 使用默认语言环境的规则将String中的所有字符都转换为大写字母 |
static String valueOf(int i) | 将int变量i转换成字符串 |
char[] toCharArray() | 将此字符串转换为一个字符数组 |
String repace(CharSequence oldstr, CharSequence newstr) | 返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的 |
String[] spit(String regex) | 根据参数regex将原来的字符串分割为若干个子字符串 |
String substrng(int beginIndex) | 返回一个新字符串,它包含从指定的beginIndex处开始,直到此字符串末尾的所有字符 |
String substring(intbegnIndex,intendIndex) | 返回一个新字符串,它包含从指定的beginIndex处开始,直到索引endIndex-1处的所有字符 |
String trim() | 返回一个新字符串,它去除了原字符串首尾的空格 |
StringBuffer类和StringBuilder类
StringBuffer类的内容和长度可变,StringBuilder类类似StringBuffer,但是StringBuilder的方法是非线程安全的,StringBuffer不能被同步访问,而StringBuilder可以
StringBuffer类的常用方法:
方法声明 | 功能描述 |
StringBuffer append(char c) | 添加参数到StringBuffer对象中 |
StringBuffer insert(int offset,String str) | 在字符串中的offset位置插入字符串str |
StringBuffer deleteCharAt(int index) | 删除此序列指定位置的字符 |
StringBuffer delete(int start, int end) | 删除StringBuffer对象中指定范围的字符或字符串序列 |
StringBuffer replace(int start, int end, String s) | 在StringBuffer对象中替换指定的字符或字符串序列 |
void setCharAt(int index, char ch) | 修改指定位置index处的字符序列 |
String toString() | 返回StringBuffer缓冲区中的字符串 |
StringBuffer reverse() | 将此字符序列用其反转形式取代 |
StringBuilder类的方法和StringBuffer类基本相同
System类
System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的
方法声明 | 功能描述 |
static void exit(int status) | 该方法用于终止当前正在运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止 |
static void gc() | 运行垃圾回收器,用于对垃圾进行回收 |
static void currentTimeMillis() | 返回以毫秒为单位的当前时间 |
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 从src引用的指定源数组复制到dest引用的数组,复制从指定位置开始,到目标数组的指定位置结束 |
static Properties getProperties() | 取得当前的系统属性 |
static String getProperty(String key) | 获取指定键描述的系统属性 |
Runtime类
Runtime类用于表示虚拟机运行时的状态,它用于封装Java虚拟机进程。每次使用Java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例
方法声明 | 功能描述 |
getRuntime() | 该方法用于返回当前应用程序的运行环境对象 |
exec(String command) | 该方法用于根据指定的路径执行对应的可执行文件 |
freeMemory() | 该方法用于返回Java虚拟机中的空闲内存量,以字节为单位 |
maxMemory() | 该方法用于返回Java虚拟机的最大可用内存量 |
availableProcessors() | 该方法用于返回当前虚拟机的处理器个数 |
totalMemory() | 该方法用于返回Java虚拟机中的内存总量 |
Math类
Math类提供了大量的静态方法以便人们实现数学计算
方法声明 | 功能描述 |
abs() | 该方法用于计算绝对值 |
sqrt() | 该方法用于计算方根 |
ceil(a, b) | 该方法用于计算大于参数的最小整数 |
floor() | 该方法用于计算小于参数的最小整数 |
round() | 该方法用于计算小数进行四舍五入后的结果 |
max() | 该方法用于计算两个数的较大值 |
min() | 该方法用于计算两个数的较小值 |
random() | 该方法用于生成一个大于0.0小于1.0的随机值 |
sqrt() | 该方法用于计算开平方的结果 |
pow() | 该方法用于计算指数函数的值 |
Random类
Random类可以在指定的取值范围内随机产生数字
方法声明 | 功能描述 |
Random() | 构造方法,用于创建一个伪随机数生成器Random(longseed) |
Instant类
Instant类代表的是某个时间。其内部由两个Long字段组成,第一部分保存的是标准Java计算时代(1970年1月1日开始)到现在的秒数,第二部分保存的是纳秒数
方法声明 | 功能描述 |
now() | 从系统时钟获取当前时刻 |
now(Clock clock) | 从指定时钟获取当前时刻 |
ofEpochSecond(longe epochSecond) | 从自标准Java计算时代开始的秒数获得一个Instant的实例 |
ofEpochMilli(long epochMilli) | 从自标准Java计算时代开始的毫秒数获得一个Instant的实例 |
getEpochSecond() | 从1970-01-01T00:00:00Z的标准Java计算时代获取秒数 |
getNano() | 从第二秒开始表示的时间线中返回纳秒数 |
parse(CharSequence text) | 从一个文本字符串(如2007-12-03T10:15:30.00Z)获取一个Instant的实例 |
from(TemporalAccessor tenporal) | 从时间对象获取一个Instant的实例 |
LocalDate类
LocalDate类仅用来表示日期。通常表示的是年份和月份,该类不能代表时间线上的即时信息,只是日期的描述
方法声明 | 功能描述 |
getYear() | 获取年份字段 |
getMonth() | 使用Month枚举获取月份字段 |
getMonthValue() | 获取月份字段,从1~12 |
getDayOfMonth() | 获取当月第几天字段 |
format(DateTmeFormatter formatter) | 使用指定的格式化程序格式化此日期 |
isBefore(ChronoLocalDate other) | 检查此日期是否在指定日期之前 |
isAfter(ChronoLocalDate other) | 检查此日期是否在指定日期之后 |
isEqual(ChronoLocalDate other) | 检查此日期是否等于指定的日期 |
isLeapYear() | 根据ISO培训日历系统规则,检查年份是否是闰年 |
parse(CharSequence text) | 从一个文本字符串中获取一个LocaDate的实例 |
parse(CharSequence text, DateTimeFormatter formatter) | 使用特定格式化LocalDate从文本字符串获取LocalDate的实例 |
plusYears(long yearsToAdd) | 增加指定年份 |
plusMonths(long monthsToAdd) | 增加指定月份 |
plusDays(long daysToAdd) | 增加指定日数 |
minusYears(long yearsToSubtract) | 减少指定年份 |
minusMonths(long monthsToSubtract) | 减少指定月份 |
minusDays(long daysToSubtract) | 减少指定日数 |
withYear(int year) | 指定年 |
withMonth(int month) | 指定月 |
withDayOfYear(int dayOfYear) | 指定日 |
Duration类
Duration类基于时间值,其作用范围是天、时、分、秒、毫秒和纳秒
方法声明 | 功能描述 |
between(Temporal startInclusive, Temporal endExclusive) | 获取一个Duraton表示两个时间对象之间的持续时间 |
toDays() | 将时间转换为以天为单位 |
toHours() | 将时间转换为以小时为单位 |
toMinutes() | 将时间转换为以分钟为单位 |
toMilis() | 将时间转换为以毫秒为单位 |
toNanos() | 将时间转换为以纳秒为单位 |
Period主要用于计算两个日期的间隔,与Duration相同,也是通过between计算日期间隔,并提供了获取年月日的3个常用方法,分别是getYears()、getMonths()和getDays()
包装类
某些场合下可能需要把基本数据类型的数据作为对象来使用,为了解决这样的问题,JDK中提供了一系列的包装类,可以把基本数据类型的值包装为引用数据类型的对象
基本数据类型 | 对应的包装类 |
byte | Byte |
char | Char |
int | Integer |
short | Short |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
例:Integer类特有方法
方法声明 | 功能描述 |
Integer valueOf(int i) | 返回一个表示指定的int值的Integer实例 |
Integer valueOf(String s) | 返回保存指定的String值的Integer对象 |
int parseInt(String s) | 将字符串参数作为有符号的十进制整数进行解析 |
int Value() | 将Integer类型的值以int类型返回 |
正则表达式
正则表达式是指一个用来描述或者匹配一系列符合某种语法规则的字符串的单个字符串
元字符
正则表达式是由普通字符(如字符a-z)和特殊字符(元字符)组成的文字模式。元字符是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
元字符 | 功能描述 |
\ | 转义字符,例如"\n"匹配"\n" |
^ | 正则表达式的开头标志 |
$ | 正则表达式的结尾标志 |
* | 匹配零次或多次 |
+ | 匹配一次或多次 |
? | 匹配一次或零次 |
. | 匹配任意字符 |
{n} | 匹配n次 |
{n,} | 至少匹配n次 |
{n,m} | n<=m,最少匹配n次,最多匹配m次 |
匹配x或y | |
[xyz] | 字符集合,匹配所包含的任意一个字符 |
[a-z] | 字符范围,匹配指定范围内的任意字符 |
[^a-z] | 负值字符范围,匹配任何不在指定范围内的任意字符 |
[a-zA-Z] | 匹配a~z到A~Z |
[a-z] | 字符范围,匹配指定范围内的任意字符 |
\d | 匹配数字0~9 |
\D | 匹配非数字字符 |
\s | 匹配空白字符 |
\S | 匹配非空白字符 |
\w | 匹配单词字符与数字0~9 |
\b | 单词边界 |
\B | 非单词边界 |
\A | 输入的开头 |
\G | 上一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
\z | 输入的结尾 |
\b | 单词边界 |
Pattern类
Pattern类用于创建一个正则表达式
Pattern p = Pattern.compile("\\w+");
方法声明 | 功能描述 |
split(CharSequence input) | 将给定的输入序列分成这个模式的匹配 |
Matcher matcher(CharSequence input) | 提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持 |
Static boolean matches(String regex, CharSequence input) | 编译给定的正则表达式,并尝试匹配给定的输入 |
Matcher类
Matcher类用于在给定的Pattern实例的模式控制下进行字符串的匹配工作
方法声明 | 功能描述 |
boolean matches() | 对整个字符串进行匹配,只有整个字符串都匹配才返回true |
boolean lookingAt() | 对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true |
boolean find() | 对字符串进行匹配,匹配到的字符串可以在任何位置 |
intend() | 返回最后一个字符匹配后的偏移量 |
string group() | 返回匹配到的子字符串 |
intstart() | 返回匹配到的子字符串在字符串中的索引位置 |
String类对正则表达式的支持
String类提供了3个方法支持正则操作
方法声明 | 功能描述 |
boolean matches(String regex) | 匹配字符串 |
String replaceAll(String regex, String replacement) | 字符串替换 |
String[] split(String regex) | 字符串拆分 |
集合
Java提供的可以存储任意类型的对象的长度可变的类统称为集合。集合类都位于java.util
包中,使用时必须导包。
- Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set。其中,List的特点是元素有序、可重复。Set的特点是元素无序且不可重复。List接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet
- Map:双列集合类的根接口,用于存储具有键(Key)、值(Value)映射关系的元素,每个元素都包含一对键值,其中键值不可重复且每个键最多只能映射到一个值,在使用Map集合时可以通过指定的Key找到对应的Value。例如,根据一个学生的学号就可以找到对应的学生。Map接口的主要实现类有HashMap和TreeMap
Collection接口
Collection是所有单列集合的父接口,它定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合
方法声明 | 功能描述 |
boolean add(Object o) | 向集合中添加一个元素 |
boolean addAll(Collection c) | 将指定Collection中的所有元素添加到该集合中 |
void clear() | 删除该集合中的所有元素 |
boolean remove(Object o) | 删除该集合中指定的元素 |
boolean removeAll(Collectionc) | 删除指定集合中的所有元素 |
boolean isEmpty() | 判断该集合是否为空 |
boolean contains(Object o) | 判断该集合中是否包含某个元素 |
boolean containsAll(Collection c) | 判断该集合中是否包含指定集合中的所有元素 |
Iterator iterator() | 返回在该集合的元素上进行迭代的迭代器(Iterator),用于遍历该集合所有元素 |
intsize() | 获取该集合元素个数 |
List接口
List接口继承自Collection接口,是单列集合的一个重要分支。List集合允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引访问List集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致
方法声明 | 功能描述 |
void add(int index, Object element) | 将元素element插入在List集合的index处 |
boolean addAll(int index,Collection c) | 将集合c所包含的所有元素插入到List集合的index处 |
Object get(int index) | 返回集合索引index处的元素 |
Object remove(int index) | 删除集合索引index处的元素 |
Object set(int index, Object element) | 将集合索引index处元素替换成element对象,并将替换后的元素返回 |
int indexOf(Object o) | 返回对象o在List集合中出现的位置索引 |
int lastIndexOf(Object o) | 返回对象o在List集合中最后一次出现的位置索引 |
List subList(int fromIndex, int toIndex) | 返回从索引fromIndex(包括)到toIndex(不包括)处的所有元素组成的子集合 |
ArrayList集合
ArrayList是List接口的一个实现类,它是程序中最常见的一种集合。在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组
LinkedList集合
LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此
方法声明 | 功能描述 |
void add(int index, E element) | 在此集合中指定的位置插入指定的元素 |
void addFirst(Object o) | 将指定元素插入此集合的开头 |
void addLast(Object o) | 将指定元素添加到此集合的结尾 |
Object getFirst() | 返回此集合的第一个元素 |
Object getLast() | 返回此集合的最后一个元素 |
Object removeFirst() | 删除并返回此集合的第一个元素 |
Object removeLast() | 删除并返回此集合的最后一个元素 |