第二十一天 常用类

 一.常用类之Object类

1.toString方法

返回对象的字符串表示形式,结果应该是一个更容易让人读懂的信息表达式(建议所有的子类都覆盖这个方法)
几乎Java所有类都会重写toString()方法

 操作方法:idea--->alt+ins---->toString

2.HashCode方法

获取对象的hash码值--->支持散列表(支持key-value键值对)

理解为地址值",不是真实地址值,每一个对象的hash码值不同

操作方法:idea--->alt+ins---->hashCode

3.equals方法

比较两个对象的成员信息是否都相同

public boolean equals(Object obj):指定其他对象与此对象是"相等"

 ==和equals()方法区别?
    ==:比较两个基本类型,数据值是否相等
    ==:连接是两个引用类型,比较的是地址值是否相等
    而Object的equals方法,默认比较的是两个引用类型的地址值是否相等,建议子类需要重写这个equals(),重写之后比较的是
   两个对象的成员信息是否相同!(Java中所有类都会重写!)    ,重写equals方法,必须同时重写hashCode()方法
 
    重写equals:比较每一个对象的成员信息是否相同 如果一样,还要比较每一个成员信息 hashCode()哈希码值是否一样,如果都相同
    系统认为这个两个人是一样的!
 
 操作方法:  alt+ins--->equals and hashcode方法

import java.util.Objects;

class Test4{
    public static void main(String[] args) {
Student s=new Student("jiajai",23);
Student s1=new Student("jiajai",23);
System.out.println(s.toString());
System.out.println(s.hashCode());
System.out.println(s.equals(s1));
    }
}
class Student extends Object{
private String name;
private int age ;
public Student(){}
public Student(String name,int age){
    this.name=name;
    this.age=age;
}

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                name.equals(student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

4.Clone克隆方法

  Object的克隆方法
       protected Object clone() throws CloneNotSupportedException  创建对象并返回它的"副本"
               方法里面本身就会带有CloneNotSupportedException:克隆不支持的异常(当要对某个Object的类进行克隆
               如果这个类不能实现cloneable接口,那么就会出现这个异常)

5.String 类

  面试题:
  String s = new String("hello") ;
      和String s = "hello" ; 有什么区别?分别创建了几个对象?
 
         区别
              前者:在堆内存中开辟空间,然后字符串值常量---指向常量池, 两个对象
              后者:推荐的方式,直接常量赋值,直接在常量池中找,有就返回地址,没有,开辟常量空间!

 * String类: 这个类final修饰不能被继承
 * 字符串是不变; 它们的值在创建后不能被更改(字符串是一个常量,存储在常量池中)
 *
 * 构造方法:
 *      public String():空字符串    类似于 String s = "" ;
 *      public String(String original):构造一个字符串对象,里面指定一个字符串常量值
 *      public String(byte[] bytes) :使用平台默认字符集(idea默认utf-8)解析解码--->字节数组--->字符串
 *      String(byte[] bytes, int offset, int length) :将一部分字节数组构造成字符串
 *      public String(char[] value):将字符数组---构造成String
 *      public String(char[] value,int offseet,int len):将一部分字符串数组构造成字符串
 *
 *
 *
 *面试题:
 *      数组中没有length(),字符串有没有length(),集合中有没有length()?
 *              数组 没有length(),length属性  数组对象.length
 *              字符串有length(),
 *              集合没有,获取集合中 元素数 size()
 *
 */

 * String类相关的获取功能


 *      1)public char charAt(int index) :获取指定索引处的字符
 *      2)int length():获取字符串的长度
 *      3)public String concat(String str)拼接功能-- 将一个字符串拼接到指定字符串的后面(末尾追加)
 *      4)public String substring(int beginIndex):截取--->从指定位置开始截取,默认截取到末尾结束!
 *      public String substring(int beginIndex, int endIndex) 截取--->从指定位置开始截取到指定位置结束
 *                              包前不包后(包含第一个位置,不包含最后一个位置,只能取到endIndex-1处)
 *      5)public String[] split(String regex):拆分(分割) ,按照指定的分割符将字符串拆分成字符串数组

 * String类的转换功能


 *      1)char[] toCharArray() 将字符串转换成字符数组
 *      2)byte[] getBytes() 平台默认字符集编码(String--->byte[])   和
 *          byte[] getBytes(String charset):指定的字符集进行编码
 *      String(byte[] bytes) :(bytes[]--->String  ) 平台默认字符集解码
 *      String(byte[] bytes,String charset) :(bytes[]--->String  ) 指定字符集解码
 *
 *      3)public String toLowerCase():将字符串转换成小写
 *         public String toUpperCase():将字符串转换成大写
 *
 *      4)万能方法:  可以将任何数据类型---->String
 *      public static String valueOf(int i/float....Object)
 *
 *      编码和解码必须一致,否则乱码!
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值