第六篇.wjj

文章介绍了Java中类的继承机制,强调了子类如何继承父类的成员,包括构造器的使用、equals方法的重写以及浅克隆和深克隆的区别。同时提到了包装类和StringBuilder在字符串操作中的优化,以及StringBuilder和StringBuffer的异同。
摘要由CSDN通过智能技术生成

继承

子类能继承父类的非私有成员(成员变量,成员方法)

继承后对象的创建:子类的对象是由子类父类共同完成的

public class B extends A{
//A类称为父类(基类或超类)
//B类称为子类(派生类)

}

父类必须有无参数构造器,否则会报错,且子类调用构造器是会先调用父类无参构造器

api

public String toString()返回字符串内容
public bollean equals(Object o)判断两个对象地址是否相等重写快捷方式 eq
protected Object clone()对象克隆需要有标记接口(Cloneable)才能调

注:equals不常用,常重写

重写:

public boolean equals(Object o) {
        //判断两个对象地址是否相等,相等直接返回true
        if (this == o) return true;
//        判断o是null,返回false;判断两个比较的类型不一样,返回false(例如;s1.equals(new Pig ()))
        if (o == null || getClass() != o.getClass()) return false;//getClass()为比较者
//        比较内容
        student student = (student) o;//进行强转
        return age == student.age && Objects.equals(name, student.name);
    }

浅克隆:拷贝出来的新对象,与原来对象中的数据一模一样(引用类型拷贝的是地址)

public class clOne {
    public static void main(String[] args) throws CloneNotSupportedException//需要加这个
{
        User a1=new User(3,"aaa",new double[]{11,33,22});
        User a2=(User) a1.clone();
        System.out.println(a2.getId);
        System.out.println(a1.getId);
        System.out.println(a1.equals(a2));
        System.out.println(a1.getScore());
        System.out.println(a2.getScore());
//数组拷贝地址,其他为内容

    }
}
class User implements Cloneable//需要这个
{
    private int id;
    private String name;
    private double [] score;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

  

    public User(){
    }

    public User(int id, String name, double[] score){
        this.id = id;
        this.name = name;
        this.score = score;
    }

    public int getId(){
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName(){
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double[] getScore() {
        return score;
    }

    public void setScore(double[] score) {
        this.score = score;
    }
}

深克隆

对象中的基本类型数据直接拷贝,字符串拷贝的还是地址,对象中其他对象会创建新对象

深克隆与浅克隆不同

 @Override
    protected Object clone() throws CloneNotSupportedException {
        User a3=(User) super.clone();
        a3.score= a3.score.clone();
        return a3;
    }

objects

public static bollean equals(Object a,Object b)先做非空判断,再比较
public static bollean isNull(Object obj)判断对象是否为null,不为返回true,反之 false
public static bollean nonNull(Object obj)判断对象是否不为null,不为返回true,反之 false

包装类:把基本类型数据包装成对象

intInteger
charCharacter

其他都为原来的首字母大写模式

  Integer a1 = Integer.valueOf(11);
        System.out.println(a1);
        //自动装箱
        Integer a2=13;
        //自动拆箱
        int a3=a2;
        ArrayList<Integer>list=new ArrayList<>();
        list.add(1);//自动装箱
        list.add(2);//自动装箱
        int aa=list.get(1);//自动拆箱
       

包装类其他操作

1.把基本数据类型转成字符串

 //1.把基本类型转换成字符串
        Integer a=23;
        String r=a.toString();
        System.out.println(r + 1);
        String r1=a+"";
        System.out.println(r1 + 1);

2.把字符串转为原来的数据类型

   //把字符串转成数值本身的数据类型
        String score="66";
       //int ageI Integer.parseInt(score);
       int ageI= Integer.valueOf(score);
        System.out.println(ageI-6);

StringBuilder

构造器说明
public StringBuilder()创建空白对象

public StringBuilder(String str)

创建字符串内容可变的字符串对象
方法名称说明
public StringBuilder append(任意类型)添加数据并返回对象本身
public StringBuilder reverse()将对象内容反转
public int length()返回对象长度
public StringBuilder toString()转为String

 

 

 

注:StringBuilder支持链式编程.例:

s.append(66).append("mmmm").append(66.6)
 String与StringBuilder的应用

1.因为使用String,每次会创建一个新对象,所以频繁的拼接,修改建议使用StringBuilder;

2.c操作少,或不需要操作用String

StringBuffer与StringBuilder

两者用法一样但StringBuilder线程不安全,StringBuffer线程安全。

StringJoiner:提供符号

构造器说明
public StringJoiner(间隔符号)创建对象,并指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建对象,并指定拼接时的间隔符号,开始符号,结束符号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mshkkhhgybzlc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值