面向对象——03

89 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天

6.1 包装类

在java里的类型可以分为两大类:值类型引用类型

*值类型就是基本数据类型(int,char,float,long,short,bolean,byte,double)

*引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。

所有的类型在内存中都拥有一定的存储空间(形参在使用的时候也会分配存储空间,在调用完方法之后,这块存储空间会自动消失),值类型只有一块存储空间(分配在stack,栈)而引用类型有两块存储空间(一块在stack中,一块在heap中,堆)

所以为了解决八种基本类型不能当成Object类型变量使用的问题,java提出了Wrapper Class 的概念

基 本 数 据 类 型包 装 类
byteByte
shortShort
intInterger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

6.1.1 toString

作用就是:描述自身状况的一个函数,但是如果要使用它需要重新自定义toString方法,如下。
private double  weight;
 private String color;
 public Apple(){     }
 public  Apple(String color, double weight)
 {
     this.color=color;
     this.weight=weight;
 }
    //此处省略color和weight的setter和getter方法
    .......
    //
    public void info() {
        System.out.println("我是一个水果!重"+weight+"g");

    }
    public String toString()
    {
        return"this is an"+ color+"apple"+"重"+weight;
    }
    public static void main(String[] args) {
     var p=new Apple();
     p.setColor("黄");
     p.setWeight(33);
     //p.info();//输出:我是一个水果!重33.0g
     System.out.println(p);//输出:this is an黄apple重33.0
    }
}

注意,代码第三行有一个无参构造器,因为给p定义的是一个Apple(),是无参的。

如果将代码改为,var p=new Apple("yellow",33),则无需定义一个无参构造器。

6.1.2 ==和equals方法

equals的使用方法:str1.equals(str2)