栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[Java][常用API]Object,Objects,StringBuilder

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Java][常用API]Object,Objects,StringBuilder

Object类:

Object类要么默认继承Object类,要么简接继承Object类,Object类是祖宗类;

Object类的方法一切子类都可使用;

Object类常用方法:

toString:

父类toString方法存在的意义是为了被子类重写,以便返回对象内容信息

package wryyyyy;

public class Student
{
    private String name;
    private char sex;
    private int age;

    public Student(String name, char sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public Student() {
    }

    @Override
    public String toString()
    {
        return "Student {name=" + name + ",sex" + sex + ",age=" + age +"}";
    }
}
package wryyyyy;

public class Test
{
    public static void main(String[] args)
    {
        Student s = new Student("小王",'男',19);
        String rs = s.toString();
        System.out.println(rs);//wryyyyy.Student@776ec8df 默认打出当前对象在堆内存中的地址
        System.out.println(s.toString());//toString可以不写


    }
}
equals:

父类equals方法存在的意义是为了被子类重写,以便返回子类自己制定比较规则

package wryyyyy;

public class Test
{
    public static void main(String[] args)
    {
        Student s1 = new Student("小王",'男',19);
        Student s2 = new Student("小王",'男',19);
        System.out.println(s1.equals(s2));//equals默认比较两个对象地址是否相同
    }
}

重写后equals比较内容,==比较地址: 

@Override
    public boolean equals(Object o)//用Object可以兼容与所有对象进行比较,不仅仅是学生对象
    {
        //先判断o是不是学生类型
        if(o instanceof Student)//判断o的真实类型
        {
            //判断两个对象内容是否一样
            if(this.name.equals(((Student) o).name) && this.sex==((Student) o).sex && this.age==((Student) o).age)
            
            {
                return true;
            }
            //或者直接写成:
            //return this.name.equals(((Student) o).name) && this.sex==((Student) o).sex && this.age==((Student) o).age;
        }
        else//如果o不是学生类型(包括o是空类型)
        {
            return false;
        }
    }
Objects:

更安全

package wryyyyy;

import java.util.Objects;

public class Test
{
    public static void main(String[] args)
    {
        String s1 = null;
        String s2 = "teacher";
        //System.out.println(s1.equals(s2));//比较内容,返回true
        //可能出现空值异常
        System.out.println(Objects.equals(s1, s2));
        //这个更安全
    }
}

System.out.println(Objects.isNull(s1));//true
StringBuilder: 构造器:

常用方法:

StringBuilder sb = new StringBuilder();
        sb.append("a");
        sb.append("b");
        sb.append("c");
        sb.append(1);
        sb.append(false);
        sb.append(3.3);
        sb.append("qwer");
        System.out.println(sb);//输出的不是地址,说明已经进行了重写

StringBuilder链式编程

 StringBuilder sb1 = new StringBuilder();
        sb1.append("a").append("b").append("c");//拼完之后又返回原对象,所以继续拼
        System.out.println(sb1);

反转内容 

        sb1.reverse().append("d");//反转之后还会返回这个对象
        System.out.println(sb1);

取长度: 

System.out.println(sb1.length());

StringBuilder只是手段,最终的目的还是要恢复成String 

        String rs = sb1.toString();

String效率低的原因:
每次拼接都会产生新对象,不断占新对象的空间
每写一个+,都new一个StringBuilder,拼完后打出String对象

StringBuilder只在堆内存中产生一个对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号