Java 的API

Java 的API(API: Application(应用) Programming(程序) Interface(接口))

Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。

在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。

Object类

Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

Modifier and Type Method and Description
protected Object clone()
创建并返回此对象的副本。
boolean equals(Object obj)
指示一些其他对象是否等于此。
protected void finalize()
当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。
getClass()
返回此 Object的运行时类。
int hashCode()
返回对象的哈希码值。
void notify()
唤醒正在等待对象监视器的单个线程。
void notifyAll()
唤醒正在等待对象监视器的所有线程。
String toString()
返回对象的字符串表示形式。
void wait()
导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。
void wait(long timeout)
导致当前线程等待,直到另一个线程调用 notify()方法或该对象的 notifyAll()方法,或者指定的时间已过。
void wait(long timeout, int nanos)
导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法,或者某些其他线程中断当前线程,或一定量的实时时间。

equals()方法

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。

在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。

/*
  描述人这个类,并定义功能根据年龄判断是否是同龄人
  由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
  在方法体中根据类的属性值进行比较
 */
class Person extends Object{
  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;
  }
}

注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

toString()方法 Object类

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

class Person extends Object{
  int age ;
  //根据Person类的属性重写toString方法
  public String toString() {
    return "Person [age=" + age + "]";
  }
}

String类

查阅API中的String类的描述,发现String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

Modifier and Type Method and Description
char charAt(int index)
返回 char指定索引处的值。
int codePointAt(int index)
返回指定索引处的字符(Unicode代码点)。
int codePointBefore(int index)
返回指定索引之前的字符(Unicode代码点)。
int codePointCount(int beginIndex, int endIndex)
返回此 String指定文本范围内的Unicode代码点数。
int compareTo(String anotherString)
按字典顺序比较两个字符串。
int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,忽略病例差异。
String concat(String str)
将指定的字符串连接到该字符串的末尾。
boolean contains(CharSequence s)
当且仅当此字符串包含指定的char值序列时才返回true。
boolean contentEquals(CharSequence cs)
将此字符串与指定的CharSequence进行 CharSequence
boolean contentEquals(StringBuffer sb)
将此字符串与指定的StringBuffer进行 StringBuffer
static String copyValueOf(char[] data)
相当于 valueOf(char[])
static String copyValueOf(char[] data, int offset, int count)
相当于 valueOf(char[], int, int)
boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结尾。
boolean equals(Object anObject)
将此字符串与指定对象进行比较。
boolean equalsIgnoreCase(String anotherString)
将此 String与其他 String比较,忽略案例注意事项。
static String format(Locale l, String format, Object... args)
使用指定的区域设置,格式字符串和参数返回格式化的字符串。
static String format(String format, Object... args)
使用指定的格式字符串和参数返回格式化的字符串。
byte[] getBytes()
使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中。
byte[] getBytes(Charset charset)
使用给定的charset将该String编码为字节序列,将结果存储到新的字节数组中。
void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
已弃用
此方法无法将字符正确转换为字节。 从JDK 1.1开始,首选的方法是通过getBytes()方法,该方法使用平台的默认字符集。
byte[] getBytes(String charsetName)
使用命名的字符集将此 String编码为字节序列,将结果存储到新的字节数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将此字符串中的字符复制到目标字符数组中。
int hashCode()
返回此字符串的哈希码。
int indexOf(int ch)
返回指定字符第一次出现的字符串内的索引。
int indexOf(int ch, int fromIndex)
返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
int indexOf(String str)
返回指定子字符串第一次出现的字符串内的索引。
int indexOf(String str, int fromIndex)
返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。
String intern()
返回字符串对象的规范表示。
boolean isEmpty()
返回 true如果,且仅当 length()0
static String join(CharSequence delimiter, CharSequence... elements)
返回一个新的字符串,由 CharSequence elements的副本组成,并附有指定的delimiter的 delimiter
static String join(CharSequence delimiter, Iterable elements)
返回一个新 String的副本组成 CharSequence elements与指定的副本一起加入 delimiter
int lastIndexOf(int ch)
返回指定字符的最后一次出现的字符串中的索引。
int lastIndexOf(int ch, int fromIndex)
返回指定字符的最后一次出现的字符串中的索引,从指定的索引开始向后搜索。
int lastIndexOf(String str)
返回指定子字符串最后一次出现的字符串中的索引。
int lastIndexOf(String str, int fromIndex)
返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索。
int length()
返回此字符串的长度。
boolean matches(String regex)
告诉这个字符串是否匹配给定的 regular expression 。
int offsetByCodePoints(int index, int codePointOffset)
返回此 String内的指数,与 index codePointOffset代码点。
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
String replace(char oldChar, char newChar)
返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar
String replace(CharSequence target, CharSequence replacement)
将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。
String replaceAll(String regex, String replacement)
用给定的替换替换与给定的 regular expression匹配的此字符串的每个子字符串。
String replaceFirst(String regex, String replacement)
用给定的替换替换与给定的 regular expression匹配的此字符串的第一个子字符串。
String[] split(String regex)
将此字符串分割为给定的 regular expression的匹配。
String[] split(String regex, int limit)
将这个字符串拆分为给定的 regular expression的匹配。
boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开头。
boolean startsWith(String prefix, int toffset)
测试在指定索引处开始的此字符串的子字符串是否以指定的前缀开头。
CharSequence subSequence(int beginIndex, int endIndex)
返回一个字符序列,该序列是该序列的子序列。
String substring(int beginIndex)
返回一个字符串,该字符串是此字符串的子字符串。
String substring(int beginIndex, int endIndex)
返回一个字符串,该字符串是此字符串的子字符串。
char[] toCharArray()
将此字符串转换为新的字符数组。
String toLowerCase()
将所有在此字符 String使用默认语言环境的规则,以小写。
String toLowerCase(Locale locale)
将所有在此字符 String ,以降低使用给定的规则情况下 Locale
String toString()
此对象(已经是字符串!)本身已被返回。
String toUpperCase()
将所有在此字符 String使用默认语言环境的规则大写。
String toUpperCase(Locale locale)
将所有在此字符 String使用给定的规则,大写 Locale
String trim()
返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。
static String valueOf(boolean b)
返回 boolean参数的字符串 boolean形式。
static String valueOf(char c)
返回 char参数的字符串 char形式。
static String valueOf(char[] data)
返回 char数组参数的字符串 char形式。
static String valueOf(char[] data, int offset, int count)
返回 char数组参数的特定子阵列的字符串 char形式。
static String valueOf(double d)
返回 double参数的字符串 double形式。
static String valueOf(float f)
返回 float参数的字符串 float形式。
static String valueOf(int i)
返回 int参数的字符串 int形式。
static String valueOf(long l)
返回 long参数的字符串 long形式。
static String valueOf(Object obj)
返回 Object参数的字符串 Object形式。

String类构造方法

Constructor and Description
String()
初始化新创建的 String对象,使其表示空字符序列。
String(byte[] bytes)
通过使用平台的默认字符集解码指定的字节数组来构造新的 String
String(byte[] bytes, Charset charset)
构造一个新的String由指定用指定的字节的数组解码charset 。
String(byte[] ascii, int hibyte)
已弃用
此方法无法将字节正确转换为字符。 从JDK 1.1开始,首选的方法是通过String构造函数获取Charset ,字符集名称,或者使用平台的默认字符集。
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String
String(byte[] bytes, int offset, int length, Charset charset)
构造一个新的String通过使用指定的指定字节子阵列解码charset 。
String(byte[] ascii, int hibyte, int offset, int count)
已弃用
此方法无法将字节正确转换为字符。 从JDK 1.1开始,首选的方式是通过String构造函数获取Charset ,字符集名称,或使用平台的默认字符集。
String(byte[] bytes, int offset, int length, String charsetName)
构造一个新的 String通过使用指定的字符集解码指定的字节子阵列。
String(byte[] bytes, String charsetName)
构造一个新的String由指定用指定的字节的数组解码charset 。
String(char[] value)
分配一个新的 String ,以便它表示当前包含在字符数组参数中的字符序列。
String(char[] value, int offset, int count)
分配一个新的 String ,其中包含字符数组参数的子阵列中的字符。
String(int[] codePoints, int offset, int count)
分配一个新的 String ,其中包含 Unicode code point数组参数的子阵列中的 字符 。
String(String original)
初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。
String(StringBuffer buffer)
分配一个新的字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。
String(StringBuilder builder)
分配一个新的字符串,其中包含当前包含在字符串构建器参数中的字符序列。
String s1 = new String(); //创建String对象,字符串中没有内容

  byte[] bys = new byte[]{97,98,99,100};
  String s2 = new String(bys); // 创建String对象,把数组元素作为字符串的内容
  String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素

  char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
  String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容
  String s5 = new String(chs, 0, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素

  String s6 = new String(“abc”); //创建String对象,字符串内容为abc

length()方法

直接返回字符串的长度

String str = "abcde";
int len = str.length();
System.out.println("len="+len);

substring()方法

返回一个新字符串,可指定长度

String str = "abcde";
String s1 = str.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符
String s2 = str.substring(2, 4); //返回一个新字符串,内容为指定位置开始到指定位置结束所有字符
System.out.println("str="+str);
System.out.println("s1="+s1);
System.out.println("s2="+s2);

startsWith()和endsWith()方法

字符串是否以指定字符串开头。结尾同理。

String str = "StringDemo.java";
boolean b1 = str.startsWith("Demo"); //判断是否以给定字符串开头
boolean b2 = str.startsWith("String");
boolean b3 = str.endsWith("java"); //判断是否以给定字符串结尾

contains()方法

当且仅当此字符串包含指定的char值序列时才返回true

String str = "abcde";
boolean b2 = str.contains("bcd"); //判断是否包含指定字符串,包含返回true,不包含返回false

indexOf()方法

返回指定字符第一次出现的字符串内的索引

String str = "abcde";
int index = str.indexOf(“bcd”); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1

toCharArray()方法和getBytes()方法

将字符串转成一个字符数组。或者字节数组。

String str = "abcde";
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();

equals()方法和equalsIgnoreCase()方法

判断两个字符串中的内容是否相同 第二个不考虑大小写

String str = "abcde";
String str2 = "abcde";
String str3 = "hello";
boolean b1 = str.equals(str2);
boolean b2 = str.equalsIgnoreCase(str3);

toString()方法 String类

获取该字符串对象中的内容

String str = new String("hello");
System.out.println( str.toString() );
System.out.pintln( str );

matches()方法

判断字符串是否匹配给定的正则表达式

举例:校验qq号码.
  1: 要求必须是5-15位数字
  2: 0不能开头
代码演示:
  String qq = "604154942";
  String regex = "[1-9][0-9]{4,14}";
  boolean flag2 = qq.matches(regex);

split()方法

根据给定正则表达式的匹配规则,拆分此字符串

举例:分割出字符串中的的数字
代码演示:
String s = "18-22-40-65";
  String regex = "-";
  String[] result = s.split(regex);
代码演示:
  String s = "18 22 40 65";
  String regex = " ";
  String[] result = s.split(regex);

replaceAll()方法

将符合规则的字符串内容,全部替换为新字符串

举例:把文字中的数字替换成*
代码演示:
  String s = "Hello12345World6789012";
  String regex = "[0-9]";
  String result = s.replaceAll(regex, "*");