01-Object的getClass方法
- 方法说明
class Object {
public final Class<?> getClass()
}
- 获取此对象的运行时对象
class Class {
public String getName()
}
- 获取此运行时对象的全限定类名
- 代码实现
Person p1 = new Person();
//获取Person类的运行时对象
Class clazz = p1.getClass();
//获取Person类的全限定类名
String clazzName = clazz.getName();
System.out.println(clazzName);
System.out.println("-------------");
Person p2 = new Person("张三",18);
Class clazz2 = p2.getClass();
System.out.println(clazz == clazz2);
System.out.println("-------------");
Student stu = new Student();
Class clazz3 = stu.getClass();
System.out.println(clazz3 == clazz2);
- 总结
- 同一个类的不同对象的运行时对象是相同的!
- 运行时对象
- 可以理解为class文件对象
02-Object类的toString方法
- 方法说明
public String toString()
- 该字符串由全限定类名、“@”、此对象哈希码的无符号十六进制表示组成
- 结果应是一个简明但易于读懂的信息表达式,建议所有子类都重写此方法。
- 代码实现
//创建Person对象
Person p = new Person("张三", 18);
System.out.println(p.toString());
System.out.println("-------------");
//直接打印对象默认调用toString方法
System.out.println(p);
- 注意事项
- 如果直接打印对象,那么会默认调用toString方法。
03-Object类的equals方法
- 方法说明
public boolean equals(Object obj)
- 默认比较两个对象的地址值
- 代码实现
Person p1 = new Person("张三", 18);
Person p2 = new Person("李四", 19);
boolean flag = p1.equals(p2);
System.out.println(flag);
System.out.println("-------------");
Person p3 = new Person("王五", 18);
Person p4 = new Person("王五", 18);
boolean flag2 = p3.equals(p4);
System.out.println(flag2);
- 以上代码,默认是在比较对象的地址值
- 如果想要让对象比较参数值,那么就需要让Person重写equals方法
public class Person {
private String name;
private int age;
//...
@Override
public boolean equals(Object obj) {
Person p = (Person) obj;
// return this.name == p.getName() && this.age == p.getAge();
return this.name .equals(p.getName()) && this.age == p.getAge();
}
}
04-equals和==的区别
- 区别
- ==
- 基本数据类型:比较值
- 引用数据类型:比较地址
- equals
- 基本数据类型:不能用
- 引用数据类型:默认比较地址
05-String类概述
- 概述
- 是一个字符串
- 字符串是常量;它们的值在创建之后不能更改。
- "abc"也是字符串对象
- 代码实现
String str1 = "abc";
str1 = "xyz";
System.out.println(str1);
06-String类构造器
- 方法说明
public String()
- 创建一个空字符串
public String(char[] value)
- 创建一个字符串,内容由字符数组value提供
public String(char[] value,int offset,int count)
- 创建一个字符串,内容由字符数组value提供一部分
- value:源字符数组
- offset:起始位置
- count:个数
public String(String original)
- 创建一个字符串,内容为original
07-String类的判断功能
- 方法说明
boolean equals(Object obj)
- 判断此字符串是否和指定字符串内容相同
boolean equalsIgnoreCase(String str)
- 判断此字符串是否和指定字符串内容相同,忽略大小写
boolean contains(String str)
- 判断此字符串是否包含指定字符串
boolean startsWith(String str)
- 判断此字符串是否以指定字符串开头
boolean endsWith(String str)
- 判断此字符串是否以指定字符串结尾
boolean isEmpty()
- 判断此字符串是否为空
08-String的获取功能
- 方法说明
int length()
- 获取此字符串的长度
char charAt(int index)
- 获取此字符串在指定索引处的字符
int indexOf(String str)
- 获取指定字符串在此字符串中第一次出现的索引
int lastIndexOf(int ch)
- 获取指定字符串在此字符串中最后出现的索引
String substring(int start)
- 截取此字符串从指定位置开始到此字符串末尾的子字符串
09-字符串的遍历
- 代码实现
String str = "abc";
System.out.println(str.charAt(0));
System.out.println(str.charAt(1));
System.out.println(str.charAt(2));
System.out.println("------------");
for (int i = 0; i < 3; i++) {
System.out.println(str.charAt(i));
}
System.out.println("------------");
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
}
10-String类的转换和替换功能
- 转换功能
byte[] getBytes()
- 将此字符串转换为字节数组
char[] toCharArray()
- 将此字符串转换为字符数组
static String valueOf(char[] chs)
- 将字符数组转换为字符串
String toLowerCase()
- 将此字符串转换为小写字符串
String toUpperCase()
- 将此字符串转换为大写字符串
- 替换功能
String replace(String oldStr,String newStr)
- 将此字符串中的所有的oldStr转换为newStr
String trim()
- 将此字符串中的前置空白和后置空白去除。
11-StringBuffer概述
- 概述
- 线程安全的可变字符序列
- 和String的区别
- String是一个不可变的字符序列
- StringBuffer是一个可变的字符序列
- 为什么要使用StringBuffer?
- StringBuffer底层使用缓冲思想,大大增加了字符序列的操作效率。
12-StringBuffer构造器
- 方法说明
public StringBuffer()
- 创建StringBuffer对象,容量为16
public StringBuffer(int capacity)
- 创建StringBuffer对象,容量为指定容量capacity
public StringBuffer(String str)
- 创建StringBuffer对象,指定初始内容为str,容量为16加上指定字符串的长度
public int capacity()
- 获取StringBuffer容量
public int length()
- 获取StringBuffer中的字符串的实际长度
13-StringBuffer的添加功能
- 方法说明
public StringBuffer append(String str)
- 往StringBuffer中的缓冲区添加元素
- 注意事项
- 当实际长度大于当前容量,那么就需要对容量进行扩容,参考以下公式
- 准新容量 = 老容量 * 2 + 2
- 当实际长度小于准新容量,那么新容量就是准新容量
- 当世界长度大于准新容量,那么新容量就是实际长度
14-StringBuffer的删除功能
- 方法说明
public synchronized StringBuffer deleteCharAt(int index)
- 删除指定索引处的字符串
public synchronized StringBuffer delete(int start, int end)
- 删除指定范围的字符串
15-StringBuffer的替换和反转功能
- 方法说明
public StringBuffer replace(int start,int end,String str)
- 使用指定字符串str替换此字符串指定范围内(从start开始,到end结束)的字符串
public StringBuffer reverse()
- 将此字符串反转
16-StringBuffer练习
- 需求
- 键盘录入一个字符串,反转输出
- 代码实现
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("请录入您要说的话");
String msg = scanner.nextLine();
StringBuffer sb = new StringBuffer(msg);
sb.reverse();
System.out.println(sb);
}