学习java的第13天

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);
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值