Java API
API(Application Programming Interface)指的是应用程序编程接口,API可以让编程变得更加方便简单。Java也提供了大量API供程序开发者使用,即Java API。Java API指的就是JDK提供的各种功能的Java类库,如之前所讲的Arrays、Collection类等,都是Java提供给开发者的类库。Java API非常多,无法针对所有的API都进行逐一讲解。
6.1 字符串类
6.1.1 String类
方法声明 | 功能描述 |
---|---|
String() | 创建一个内容为空的字符串 |
String(String value) | String(String value) |
String(char[] value) | 根据指定的字符数组value创建对象 |
String(byte[] bytes) | 根据指定的字节数组bytes创建对象 |
public class Example01 {
public static void main(String[] args) throws Exception {
//创建一个空的字符串
String str1 = new String();
//创建一个内容abcd的字符串
String str2 = new String("abcd");
//创建一个字符数组
char[] charArray = new char[]{
'D', 'E', 'D'};
String str3 = new String(charArray);
//创建一个字节数组
byte[] arr = {
97, 98, 99};
String str4 = new String(arr);
System.out.println("a" + str1 + "b");
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
}
}
6.1.2 String类的常用方法
方法声明 | 功能描述 |
---|---|
int length() | 返回当前字符串的长度,即字符串中字符的个数。 |
int indexOf(int ch) | 返回指定字符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) | 判断此字符串是否以指定的字符串结尾。 |
boolean equals(Object obj) | 比较obj与当前字符串对象的内容是否相同。 |
boolean equalsIgnoreCase(String str) | 以忽略大小写的方式比较str与当前字符串对象的内容是否相同。 |
int compareTo(String str) | 按对应字符的Unicode编码比较str与当前字符串对象的大小。若当前字符串对象比str大,返回正整数;若比str小,返回负整数;若相等则返回0。 |
int compareToIgnoreCase(String str) | 按对应字符的Unicode编码以忽略大小写的方式比较str与当前字符串对象的大小。若当前字符串对象比str大,返回正整数;若比str小,返回负整数;若相等则返回0。 |
boolean isEmpty() | 判断字符串长度是否为0,如果为0则返回true,反之则返回flase。 |
boolean startsWith(String prefix) | 判断此字符串是否以指定的字符串prefix开始。 |
方法声明 | 功能描述 |
---|---|
boolean contains(CharSequence cs) | 判断此字符串中是否包含指定的字符序列cs。 |
String toLowerCase() | 使用默认语言环境的规则将String中的所有字符都转换为小写。 |
String toUpperCase() | 使用默认语言环境的规则将String中的所有字符都转换为大写。 |
static String valueOf(int i) | 将int变量i转换成字符串。 |
char[] toCharArray() | 将此字符串转换为一个字符数组。 |
String replace(CharSequence oldstr, CharSequence newstr) | 使用newstr替换原字符串中的oldstr,返回一个新的字符串。 |
String concat(String str) | 将str连接到当前字符串对象之后。 |
String[] split(String regex) | 根据参数regex将原来的字符串分割为若干个子字符串。 |
String substring(int beginIndex) | 返回一个新字符串,它包含从指定的beginIndex处开始,直到此字符串末尾的所有字符。 |
String substring(int beginIndex, int endIndex) | 返回一个新字符串,它包含从指定的beginIndex处开始,直到索引endIndex-1处的所有字符。 |
String trim() | 去除了原字符串首尾的空格。 |
public class Example01 {
public static void main(String[] args) {
String s = "abababababcccccab";
//获取字符串长度,即字符个数
System.out.println("字符串长度:"+s.length());
System.out.println("字符串的第一个字符:"+s.charAt(0));
System.out.println("字符c第一次出现的位置:"+s.indexOf('c'));
System.out.println("字符c最后一次出现的位置:"+s.lastIndexOf('c'));
System.out.println("字符串ab最后一次出现的位置:"+s.lastIndexOf("ab"));
}
}
public class Example01 {
public static void main(String [] args){
String str="abCD";
System.out.print("将字符串转为字符数组后的结果:");
char[] charArray=str.toCharArray(); //字符串转换成字符数组
for(int i=0;i<charArray.length;i++){
if(i!=charArray.length-1){
//如果不是数组的最后一个元素,在元素尾加逗号
System.out.print(charArray[i]+",");
}else{
System.out.println(charArray[i]);
}
}
System.out.println("将int值转换成String类型之后的结果:"+String.valueOf(12));
System.out.println("将字符串转换成大写之后的结果:"+str.toUpperCase());
System.out.println("将字符串转换成小写之后的结果:"+str.toLowerCase());
}
}
public class Example01 {
public static void main(String [] args){
String s="itcast";
//字符串替换操作
System.out.println("将it替换成cn.it的结果:"+s.replace("it","cn.it"));
//字符串去除空格操作
String s1=" i t c a s t ";
System.out.println("去除字符串两端的空格的结果:"+s1.trim());
System.out.println("去掉字符串中所有空格后的结果:"+s1.replace(" ",""));
}
}
public class Example01 {
public static void main(String [] args){
String s1="String";
String s2="string";
String s3="strlng";
System.out.println("判断s1字符串对象是否以Str开头:"
+ s1.startsWith("Str"));
System.out.println("判断是否包含字符串tri:"+s1.contains("tri"));
System.out.println("判断字符串是否为空:"+s1.isEmpty());
System.out.println("判断s1和s2内容是否相同:"+s1.equalsIgnoreCase(s2));
System.out.println("判断s1和s3内容是否相同:"+s1.equalsIgnoreCase(s3));
System.out.println("按对应字符的Unicode比较s1和s2的大小:"+s1.compareTo(s2));
//按字典顺序比较两个字符串,忽略大小写差异。
System.out.println("按对应字符的Unicode比较s1和s2的大小:"+s1.compareToIgnoreCase(s2));
}
}
在判断两个字符串是否相等时,可以通过“== ” 和equals()方法两种方式对字符串进行比较,但这两种方式有明显的区别。equals()方法用于比较两个字符串内容是否相等,方法用于比较两个字符串对象的地址是否相同。对于两个内容完全一样的字符串对象,调用equals()方法判断的结果是true,使用判断的结果是false。
trim()方法用于去除字符串两端的空格,不能去除中间的空格。若想去除字符串中间的空格,需要调用String类的replace()方法。
public class Example01 {
public static void main(String[] args){
String str1="石家庄-武汉-哈尔滨";
//字符串截取
System.out.println("从第5个字符截取到末尾的结果:"+ str1.substring(4));
System.out.println("从第5个字符截取到第6个字符的结果:"+str1.substring(4,6));
//字符串分割
System.out.print("分割后的字符串数组中的元素依次是:");
String[] strArray=str1.split("-");
for(int i=0;i<strArray.length;i++){
if(i!=strArray.length-1){
System.out.print(strArray[i]+",");
}else{
System.out.println(strArray[i]);
}
}
}
}
public class Example01 {
public static void main(String [] args){
String s="itcast";
System.out.println(s.charAt(3));
// System.out.println(s.charAt(8));
//.charAt()
//返回指定索引处的char值。索引的取值范围是0 ~ length() - 1。序列的第一个字符值位于索引0处,下一个位于索引1处,以此类推,对于数组索引。
//如果索引指定的char值是代理值,则返回代理值。
}
}
6.1.3 StringBuffer类
在Java中,因为String类是final类型的,所以使用String定义的字符串是一个常量,也就是说使用String定义的字符串一旦创建,其内容和长度是不可改变的。为了便于对字符串进行修改,Java提供了StringBuffer类(也称字符串缓冲区)来操作字符串。StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的StringBuffer对象。
方法声明 | 功能描述 |
---|---|
StringBuffer() | 创建初始容量为16,不含任何内容的字符串缓冲区 |
StringBuffer(int capacity) | 创建初始容量为capacity,不含任何内容的字符串缓冲区 |
StringBuffer(String s) | 创建初始容量为s.length()+16,内容为s的字符串缓冲区 |
int length() | 获取缓冲区中字符串内容的长度 |
int capacity() | 获取字符串缓冲区的当前容量 |
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() | 反转字符串 |
String substring(int start) | 获取缓冲区中字符串从索引start(含)至末尾的子串 |
String substring(int start,int end) | 获取缓冲区中字符串从索引start(含)至索引end(不含)的子串 |
String toString() | 获取缓冲区中的字符串 |
public class Example03 {
public static void main(String[] args) {
System.out.println("----------1 添加----------");
add();
System.out.println("----------2 删除----------");
remove();
System.out.println("----------3 修改----------");
alter();
System.out.println("----------4 截取----------");
sub();
}
public static void add() {
StringBuffer sb = new StringBuffer(); //定义一个字符串缓冲区
sb.append("abcdefg"); //在末尾添加字符串
sb.append("hij").append("klmn"); //练习调用append()方法添加字符串
System.out.println("append添加结果:" + sb);
sb.insert(2, "123"); //在指定位置插入字符串
System.out.println("insert添加结果:" + sb);
}
public static void remove() {
StringBuffer sb = new StringBuffer("abcdefg");
sb.delete(1, 5); //指定范围删除
System.out.println("删除指定范围结果:" + sb);
sb