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);
}