常用对象API
一.概述
在开发中,有些对象的的API是很经常使用到的,先将其总结如下,方便日后开发。
二.String/StringBuffer(StringBuilder)
1.String
(1)String类的特点
字符串对象一旦被初始化就不会被改变。字符串对象有两种初始化方式:
① String str = "AaA" ;
// 这种方式创建对象,如果在常量池中存在"AaA"这个字符串,则直接实例化字符串对象;如果常量池中没有该字符串,则创建该对象的同时,将该字符串存入常量池中。
② String str = new String("AaA") ;
// 这种方式创建对象,是将对象存放于堆内存之中,跟使用第一种方式创建出来的对象是不相等的。
注意:
使用第一种方式创建字符串对象时,如果对String类的对象str进行赋值操作(str = "nba"),则原字符串对象("AaA")并没有被改变,只是引用变量str指向了新创建的字符串对象"nba"。
(2)String对象的常用方法
① 构造方法:
String str = new String(byte[] bytes) ;
// 通过使用默认字符集编码指定的byte数组进行构造
String str = new String(char[] value) ;
// 将字符数组中的字符序列转换成字符串。(可以在此构造方法中传入初始位置和数量来取得字符数组中的子数组)
② 获取字符串中的个数(长度):
(返回值类型:int) length() ; // 获取字符串的长度
③ 根据位置获取字符:
(返回值类型:char) charAt(int index) ; // 获取指定index位置处的字符
④ 根据字符获取其所在位置(从头到尾):
(返回值类型:int) indexOf(int ch) ;
// 获取指定字符(支持该字符在ASCII码中的对应数字)的位置,如果没有返回-1。
其重载方法包括:
(返回值类型:int) indexOf(int ch,int fromIndex) ; ---- 从指定位置开始查找第一次出现该指定字符的位置
(返回值类型:int) indexOf(String str) ; ---- 从头开始查找第一次出现该指定字符串的位置
(返回值类型:int) indexOf(String str,int fromIndex) ; ---- 从指定位置开始查找
⑤ 根据字符获取其所在位置(从尾到头):
(返回值类型:int) lastIndexOf(String str) ; // 从末尾开始查找第一次出现指定字符串的位置
与indexOf()相似的方法还有:
(返回值类型:int) lastIndexOf(String str,int fromInde) ;
(返回值类型:int) lastIndexOf(int ch,int fromInde) ;
(返回值类型:int) lastIndexOf(int ch) ;
注意:
此查找字符/字符串位置的方式可用于判断制定字符/字符串是否存在。(是否返回的是-1,-1则为不存在)
⑥ 获取字符串中的一部分字符串()子串:
(返回值类型:String) substring(int beginIndex) ;
// 获取从beginIndex位置开始到末尾的字符串
(返回值类型:String) substring(int beginIndex,int endIndex) ;
// 获取包括beginIndex位置的但不包括endIndex位置的字符串
⑦ 将字符串转换成字符串数组;
(返回值类型:String[]) split(String regex) ;
// 该方法涉及正则表达式,将字符串以指定正则方式切割,并存放于字符串数组中
范例:
<strong><span style="font-family:KaiTi_GB2312;font-size:14px;">public class StringMethodDemo {
public static void main(String[] args) {
String s = "张三,李四,王五";
String[] arr = s.split(",");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}</span></strong>
注:该方法将返回一个字符串数组{"张三","李四","王五"}。⑧ 将字符串转成字符数组:
(返回值类型:char[]) toCharArray() ;
⑨ 将字符串变成字节数组:
(返回值类型:char[]) getBytes() ;
⑩ 将字符串中的字母转换大小写:
(返回值类型:String) toUpperCase() ; // 转成大写
(返回值类型:String) toLowerCase() ; // 转成大写
⑪ 将字符串中的内容进行替换:
(返回值类型:String) replace(char oldCh,char newCh) ; // 将字符串中所有oldCh替换成newCh
(返回值类型:String) replace(String s1,String s2) ;
注意:
replace()方法如果没有找到要替换的内容,则返回的还是原字符串。
⑫ 去除字符串两端的空格:
(返回值类型:String) trim() ;
范例:(模拟一个trim()功能的方法 ---- 核心代码演示)
<span style="font-family:KaiTi_GB2312;font-size:14px;"><strong>public static String myTrim(String s) {
// 定义变量作为从头开始判断字符串空格的角标,不断++
int start = 0;
// 定义变量作为从尾开始判断字符串空格的角标,不断--
int end = s.length() - 1;
// 判断到不是空格为止,取头部之间的字符串即可得到trim()方法的效果
while (start <= end && s.charAt(start) == ' ') {
start++;
}
while (start <= end && s.charAt(end) == ' ') {
end--;
}
return s.substring(start, end + 1);
}</strong></span>
⑬ 将字符串进行链接:
(返回值类型:String) concat(String str) ; // 将两个字符串进行拼接
注意:
concat效果与"+"连接符效果一致,但是效果更高一些。
⑭ 判断两个字符串的内容是否相同:
(返回值类型:boolean) equals(Object obj) ;
(返回值类型:boolean) equalsIgnoreCase(Object obj) ; // 忽略大小写进行判断
⑮ 判断字符串中是否包含指定字符:
(返回值类型:boolean) contains(String str) ;
⑯ 判断是否以指定字符串开头或是结尾:
(返回值类型:boolean) startWith(String str) ; // 判断是否以指定字符串开头
(返回值类型:boolean) endWith(String str) ; // 判断是否以指定字符串结尾
⑰ 比较:
(返回值类型:int) compareTo(String str) ;
// 比较两个字符串的大小。如果参数字符串等于此字符串,则返回值0;如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值。
2.StringBuffer
StringBuffer其实就是一个字符串缓冲区,用于存储数据的容器。其有以下几个特点:
① StringBuffer的长度是可变的 ;
② StringBuffer可以存储不同的数据类型 ;
③ StringBuffer最重要转变成字符串进行使用 。
注意: StringBuffer的字符串缓冲区初始容量为16个字符,其实质是数组 。
方法介绍:
① 添加:
(返回值类型:StringBuffer) append("任何类型的数据") ;
// 该方法可以添加任何类型的数据并自动进行拼接
② 插入:
(返回值类型:StringBuffer) insert(index,"任何类型的数据") ;
// 该方法可以在指定的inde位置插入任何类型的数据
③ 删除:
(返回值类型:StringBuffer) delete(int start,int end) ; // 删除包含头不包含尾的数据
(返回值类型:StringBuffer) deleteCharAt(int index) ; // 删除指定位置的元素
④ 查找:
(返回值类型:char) charAt(int index) ; // 查找指定位置的元素
(返回值类型:int) indexOf(String str) ; // 查找指定元素的位置
(返回值类型:int) lastIndexOf(String str) ; // 从末尾向前查找指定元素
⑤ 修改:
(返回值类型:StringBuffer) replace(int start,int end,String str) ;
// 将str替换指定范围的字符串(包含头不包含尾)
(返回值类型:void) setCharAt(int index,char ch) ;
// 修改指定位置的一个字符
⑥ 设置长度:
(返回值类型:void) setLength(int newLength) ; // 设置字符序列的长度
注意:
① 使用setLength设置StringBuffer中字符序列的长度。如果小于已有字符序列的长度,相当于清除缓冲区中的一部分内容。如果大于已有字符序列的长度,相当于扩充缓冲区,扩充部门内容用空格字符填充。
② 当创建的StringBuffer内容长度大于16,将会新创建一个新数组,长度比旧数组要长。然后把就数组的内容拷贝到新的数组,超出旧数组长度范围的内容将会放在新数组现在内容的后面,也可以通过StringBuffer(int capacity);构造函数自己设置StringBuffer缓冲区长度。
⑦ 反转:
(返回值类型:StringBuffer) reverse() ; // 将字符序列勇气反转形式替代
3.StrignBuilder
在JDK1.5之后,使用StrignBuilder替代StringBuffer。StringBuffer与StrignBuilder的不同之处在于:
① StringBuffer是线程同步的,通常是用于多线程;而StrignBuilder是线程不同步的,通常用于单线程;
② 由于一个是线程同步一个不同步,所以相比较StringBuffer,StrignBuilder的效率要高一些
在以后日常开发中,在不涉及多线程时,尽量使用StrignBuilder。
三.其他对象API
1.System类
System类中的方法全部都是静态方法,包含了很多操作系统属性的方法
方法介绍:
① 获取当前时间的毫秒值
(返回值类型:long) currentTimeMillis() ; //可以通过此方法检测程序的执行时间
② 确定当前的系统属性
(返回值类型:long) getProperties() ;
//Properties集合,Properties集合中存储的都是String类型的键和值。
例如:
System.getProperty("line.separator" ) ; // 获取系统的换行标志
注意:最好使用它自己的存储和取出的方法来完成元素的操作。
③ 给属性设置一些属性信息
System.setPeroperty("myclasspath","c:\myclass") ;
// 所设置的这些信息是全局的,其他程序都可以使用。
2.Runtime类
Runtime类不可以创建对象,实例化该类需要利用其提供静方法返回该类对象。(Runtime类是典型的使用了单例设计模式)每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。
范例:
Runtime r = Runtime.getRuntime() ;
Process p = r.exec( "notepad.exe D:\\code\\day20\\RuntimeDemo.java") ;
// 使用该方法可以打开指定的记事本文件
3.Math类
Math类提供了操作数学运算的方法,其方法都是静态的。
方法介绍:
① ceil(); // 返回大于参数的最小整数
② floor(); // 返回小于参数的最大整数
③ round(); // 返回四舍五入的整数
④ pow(a,b); // a的b次方
4.Date/DateFormat类
Date/DateFormat类常用于操作日期对象,其常用方法有:
① 将毫秒值转换成日期对象:
new Date(timeMillis) ;
// 通过Date对象的构造方法对毫秒值进行转换(还可以通过Date对象的setTime()方法)
② 将日期对象转换成毫秒值:
getTime() ; // 通过具体的数值进行运算
③ 对日期对象进行格式化:
// 使用DateFormat类中的format()方法
方式一:
// 获取日期格式对象,具备着默认的风格。也可以指定为FULL、LONG风格
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);
String str_date1 = df.format(date);
System.out.println(str_date1);
方式二:
//使用该方法也可以得到相同结果
df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG);
String str_date2 = df.format(date);
System.out.println(str_date2);
方式三:
df = new SimpleDateFormat("yyyy--MM--dd");
String str_date3 = df.format(date);
System.out.println(str_date3);
④ 将日期格式的字符串装换成日期对象:
// 使用DateFormat类中的prase()方法
<span style="font-family:KaiTi_GB2312;font-size:14px;"> public static void main(String[] args) throws Exception {
String str_date1 = "2012年4月19日" ;
String str_date2 = "2012--4--19";
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
Date date1 = dateFormat.parse(str_date1);
System.out.println(date1);
dateFormat= new SimpleDateFormat("yyyy--MM--dd" );
Date date2 = dateFormat.parse(str_date2);
System.out.println(date2);
}</span>
5.Calendar类
Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
范例演示:
<span style="font-family:KaiTi_GB2312;font-size:14px;">import java.util.Calendar;
/*
* 自定义日期,查询所指定的日期是星期几
*/
public class CalendarDemo {
public static void main(String[] args) {
//创建一个Calendar对象
Calendar c = Calendar.getInstance();
//自定义时间
c.set(2014, 3, 20);
c.add(Calendar.YEAR, -2);
showDate(c);
}
public static void showDate(Calendar c) {
int year = c.get(Calendar.YEAR);
//Calendar类的MONTH常量是从0开始算一月的,所以为了符合我们的日常习惯需要+1
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK);
System.out
.println(year + "年" + month + "月" + day + "日" + getWeek(week));
}
public static String getWeek(int i) {
String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return weeks[i];
}
}
</span>
在日常开发中,这些对象的API是经常用到的。所以我们应该对其有所认识,并熟练掌握其使用方式,以便于日后开发!