常用API
1.API简介
1.1API概念
API全名
application(应用) programming(程序) interface(接口)
API是应用程序编程接口
Java API
Java API就是sun公司提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用,为使用提供的帮助文档。
文档注释
在JDK中有src.zip文件,这个文件夹是所有Java类的源文件,可以在其中查看相对应的类源码。源码类、方法等代码上,就有对应的文档注释,也就是API的原材料。如果直接通过源代码的文档注释来了解api的使用,将过于繁琐。
帮助文档
我们可以通过javadoc.exe将文档注释,转换成html格式的帮助文档。实际使用中人们觉得html格式的文档查询时也不是非常灵活。再借助第三方工具,将html文档转成chm文档,我们之后将通过chm帮助文档来查看Java提供的API使用情况。
1.2、API帮助文档阅读方式学习
2.常用类
2.1Object类
Object类是Java语言中的根类,即所有类的父类。其中描述的所有方法子类都可以使用。其中toString、equals是非常常用的方法。
2.1.1toString方法
toString方法返回该对象的字符串表示。
输出格式:“对象类型@内存地址值”。例如:java.lang.Object@1db9742
当我们使用System.out.println( obj ) 输出对象变量时,其实是一种省略写法,完整内容是 System.out.println( obj.toString() )。
public class Person {
private int age ;
//根据Person类的属性重写toString方法
public String toString() {
return "Person [age=" + age + "]";
}
}
2.1.2equals方法
equals用于比较两个对象是否相等,默认实现使用==比较地址值。
在开发中要比较两个对象是否相同,经常会根据对象中的字段值进行比较,所以子类经常重写equals方法。例如:String就重写了equals,比较每一个字符是否相同。
再例如:描述人这个类,要求根据年龄判断是否是同龄人
class Person {
int age ;
//复写父类的equals方法,实现自己的比较方式
public boolean equals(Object obj) {
//判断当前调用equals方法的对象和传递进来的对象是否是同一个
if(this == obj){
return true;
}
//判断传递进来的对象是否是Person类型
if(!(obj instanceof Person)){
return false;
}
//将obj向下转型为Perosn引用,访问其属性
Person p = (Person)obj;
return this.age == p.age;
}
}
2.1String类
2.1.1字符串概念
字符串是由多个字符组成的一串数据
字符串可以看成是字符数组
2.1.2字符串的特殊性
字符串是特殊的引用类型,字符串是常量,也就是说值在创建之后不能更改。而常量在内存中存储在一个特殊区域——常量池。需要注意的是,字符串本身不能改变,但变量中记录的地址值可以改变。
如果使用字面值常量来表示字符串时,不管有多少个引用,只要他们指向的字符串值相同,所有变量都指向同一片内存区域。
例如:
//演示字符串可以共享
String str1 = “czxy”;
String str2 = “czxy”;
System.out.println(str1==str2);
输出的结果为true,就说明str1的引用和str2的引用指向的同一片内存区域。
如果使用new关键字创建对象,而不是使用字面值常量,那么String与其他引用类型没有区别,都在堆内存开发开辟空间。
例如:
public class Demo02String {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
System.out.println("s1==s2:"+(s1==s2));
String s3 = "hello";
System.out.println("s1==s3:"+(s1==s3));
System.out.println("s2==s3:"+(s2==s3));
}
}
2.1.3常见构造方法
publicclass Demo01String {
publicstaticvoid main(String[] args) {
//方式1:String(String original):把字符串数据封装成字符串对象
Strings1 = new String("hello");
System.out.println("s1:"+s1);
System.out.println("---------");
//方式2:String(char[] value):把字符数组的数据封装成字符串对象
char[] chs = {'h','e','l','l','o'};
String s2 = new String(chs);
System.out.println("s2:"+s2);
System.out.println("---------");
//方式3
//String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
//String s3 = new String(chs,0,chs.length);
String s3 = new String(chs,1,3);
System.out.println("s3:"+s3);
System.out.println("---------");
}
}
2.1.4常见方法
断功能方法
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头
boolean endsWith(String str):判断字符串对象是否以指定的str结尾
publicclass Demo01String {
publicstaticvoid main(String[] args) {
//创建字符串对象
String s1 = "hello";
String s2 = "hello";
String s3 = "Hello";
//boolean equals(Object obj):比较字符串的内容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println("-----------");
//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println("-----------");
//boolean startsWith(String str):判断字符串对象是否以指定的str开头
System.out.println(s1.startsWith("he"));
System.out.println(s1.startsWith("ll"));
}
}
获取功能方法
int length():获取字符串的长度,其实也就是字符个数
char charAt(int index):获取指定索引处的字符
int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回-1
String substring(int start):从start开始截取字符串到字符串结尾
String substring(int start,int end):从start开始,到end结束截取字符串;包括start,不包括end
publicclass Demo01String {
publicstaticvoid main(String[] args) {
//创建字符串对象
String s = "helloworld";
//int length():获取字符串的长度,其实也就是字符个数
System.out.println(s.length());
System.out.println("--------");
//char charAt(int index):获取指定索引处的字符
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println("--------");
//int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回-1
System.out.println(s.indexOf("l"));
System.out.println(s.indexOf("owo"));
System.out.println(s.indexOf("ak"));
System.out.println("--------");
//String substring(int start):从start开始截取字符串到字符串结尾
System.out.println(s.substring(0));
System.out.println(s.substring(5));
System.out.println("--------");
//String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
System.out.println(s.substring(0, s.length()));
System.out.println(s.substring(3,8));
}
}
转换功能方法
char[] toCharArray():把字符串转换为字符数组
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串
publicclass Demo01String {
publicstaticvoid main(String[] args) {
//创建字符串对象
String s = "abcde";
//char[] toCharArray():把字符串转换为字符数组
char[] chs = s.toCharArray();
for(intx=0; x<chs.length; x++) {
System.out.println(chs[x]);
}
System.out.println("-----------");
//String toLowerCase():把字符串转换为小写字符串
System.out.println("HelloWorld".toLowerCase());
//String toUpperCase():把字符串转换为大写字符串
System.out.println("HelloWorld".toUpperCase());
}
}
去除空格和分割功能方法
String trim()去除字符串两端空格
String[] split(String str)按照指定符号分割字符串
publicclass Demo01String {
publicstaticvoid main(String[] args) {
//创建字符串对象
String s1 = "helloworld";
String s2 = " helloworld ";
String s3 = " hello world ";
System.out.println("---"+s1+"---");
System.out.println("---"+s1.trim()+"---");
System.out.println("---"+s2+"---");
System.out.println("---"+s2.trim()+"---");
System.out.println("---"+s3+"---");
System.out.println("---"+s3.trim()+"---");
System.out.println("-------------------");
//String[] split(String str)
//创建字符串对象
String s4 = "aa,bb,cc";
String[] strArray = s4.split(",");
for(intx=0; x<strArray.length; x++) {
System.out.println(strArray[x]);
}
}
}
2.2StringBuilder类
在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区。
String 是不可变的
StringBuilder 是可变的
2.2.1字符串缓冲区概念
字符串是不可变的,所以使用+拼凑字符串时,均会产生多个新对象,而字符串缓冲区相当于一个不限制大小的字符数组,当我们追加新字符串时,它只需将新字符串添加到字符数组即可,等我们需要使用整个字符串时,调用toString()生成新字符串。
在Java中常见的字符缓冲区有:StringBuilder、StringBuffer。我们主要讲解StringBuilder。
扩展:
StringBuilder是线程多用户同时访问可能存在安全问题,但性能好。StringBuffer是多用户同时访问不存在安全问题,但性能差。开发中常用StringBuilder。二者方法完全一致。
2.2.2常见方法
2.2.3链式调用
在StringBuilder的方法中,有许多方法的返回值都是该类型本身,如append方法,我们在调用append之后,可以继续调用append方法,依次类推,可以进行多次调用,这种调用方式叫做链式调用。
如:
StringBuilder sb = new StringBuilder();
sb.append(“aaa”)
.append(“bbb”)
.append(“ccc”)
.append(“ddd”) ;
String data = sb.toString(); //data的结果为aaabbbcccddd
总结
1、API指Java当中的类与接口。通常将其说明文档也说成API。
2、Object类是所有Java类的父类,唯一一个没有父类的类。其所有方法在所有类中都存在。
toString方法返回对象的字符串。会在调用println方法中自动调用,没有重写时会返回对象地址,通常会重写。
3、String类是字符串类,最常使用的引用数据类型,包含各种操作字符串的方法,通常会返回一个新的字符串。
4、StringBuilder类是字符串缓冲类,用于拼写字符串。当遇到复杂的字符串时,通常会使用StringBuilder拼写好字符串后再返回。