1 Java API & Object 类
1.1 Java的API
API:Application Programming Interface (应用程序接口)。
Java API 是JDK中提供给我们使用的类,这些类将底层代码实现封装起来。
1.2 Object类概述
Object类是Java语言中的根类,是所有类的父类。所有类在创建对象的时候,最终找的父类是Object。
1.3 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类型。
- 在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
1.4 toString方法
此方法返回对象的字符串表示。该字符串内容是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
示例:
class Person extends Object{
int age ;
//根据Person类的属性重写toString方法
public String toString() {
return "Person [age=" + age + "]";
}
}
2 String类
2.1 概述
1)字符串是常量,在创建之后不能更改?
String str="hello";
str="world"; // 输出str,为world
不能更改==>字符串本身不能改变(拼接,更改某个字符),但是str变量中记录的地址值是可以改变的。
2)使用双引号创建对象与使用new的方式有啥不同?
String s1 = "abc";
String s2 = new String("abc");
- s1创建,在内存中只有一个对象,这个对象在字符串常量池中。
- s2创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象在字符串常量池中。
2.2 String类中的一些方法
String str="hello,world";
// 字符串长度
System.out.println(str.length()); // 11
// 获取部分字符串
System.out.println(str.substring(2, 4)); // ll
// 从指定位置到字符串末尾的所有字符
System.out.println(str.substring(3)); // lo,world
// 判断字符串是否以xx开头
System.out.println(str.startsWith("he")); // true
// 判断字符串是否包含指定的字符串
System.out.println(str.contains("world")); // true
// 返回指定字符串第一次出现的位置
System.out.println(str.indexOf("llo")); // 2
// 将字符串转换成新的字符数组
char[] chs=str.toCharArray();
// 使用平台的默认字符集将字符串编码成byte序列,存储在一个byte数组中
byte[] bytes=str.getBytes();
String str1="HELLO,world";
// 判断俩个字符串是否相同,忽略大小写
System.out.println(str.equalsIgnoreCase(str1)); // true
3 字符串缓冲区
3.1 StringBuffer 类概述
StringBuffer,可变字符序列,是个字符串缓冲区,就是一个容器,可以装很多字符串,并且能够对其中的字符串进行各种操作。
3.2 常用方法
StringBuffer sbBuffer=new StringBuffer();
// 添加字符串
System.out.println(sbBuffer.append("hello")); // hello
// 在指定位置插入
System.out.println(sbBuffer.insert(2, "sky")); // heskyllo
// 删除指定范围的字符串
System.out.println(sbBuffer.delete(2, 5)); // hello
// 替换指定范围的内容
System.out.println(sbBuffer.replace(1, 3, "sbl")); // hsbllo
// 将字符串序列反序
System.out.println(sbBuffer.reverse()); // ollbsh
3.3 StringBuilder 类
此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。