Java构造器与this关键字

J a v a 构造器与 t h i s 关键字 \huge{Java构造器与this关键字} Java构造器与this关键字

Java类构造器

作用

在类中定义用于初始化一个类的对象,并且返回对象的地址。(可以理解为就是创建一个对象)

调用实例

Car c = new Car();	//无参数调用格式
Car c = new Car("五菱宏光",6.66);	//有参数调用格式

构造器格式与调用格式

在这里插入图片描述

分类

①. 无参数构造器:定义类的时候默认就拥有的,不管写不写都是可以调用的,会为成员变量赋值为初始值。
实例:

Car c = new Car();		//调用无参数构造器

//Car类定义
public class Car {
    String name;
    double price;
    /**
      无参数构造器(默认存在的)
     */
    public Car(){
        System.out.println("无参数构造器被触发执行~~~");
    }
}

输出结果:
在这里插入图片描述

②.有参数构造器:定义构造器的时候加上参数,可以为定义的对象的成员变量进行初始化。
实例:

Car c = new Car("宝马X3", 37.89); //调用有参数构造器

//有参数构造器结构
public Car(String name, double price){
        System.out.println("有参数构造器被触发执行~~~");
        System.out.println(this);
        this.name = name;
        this.price = price;
    }

调用结果:
在这里插入图片描述

❗❗注意事项

①. 只要是类定义出来了不管写不写都是默认都有无参数构造器的,都是可以直接调用的。
❗②. 如果自己后来又定义了有参数构造器,那么无参数构造器就会被“覆盖”掉,无法再次调用系统默认生成的无参数构造器了,如果还想要调用无参数构造器只能自己重新写一个了。

t h i s this this关键字

本质:this关键字本质就是代指当前访问对象的地址

作用

可以出现在构造器与方法之中用来指代当前对象的成员。
实例:

//调用有参数构造器并且打印c对象的地址
Car c = new Car("宝马X3", 37.89);
System.out.println(c);

//Car的有参数构造器
public Car(String name, double price){
        System.out.println("有参数构造器被触发执行~~~");
        System.out.println(this);		//打印this中保存的内容
        this.name = name;
        this.price = price;
    }

运行结果:
在这里插入图片描述
可以看到c中保存的地址与this中保存的地址相同。

应用场景

当传入参数与类的成员变量同名的时候,直接初始化等操作可能因为变量的定义域问题而覆盖掉导致无效操作。

//下面代码表面上好像是初始化了
//但是因为变量定义域的问题,这里的赋值是对于传入参数的赋值,并没有涉及到类的成员变量
 public Car(String name, double price){
        name = name;
        price = price;
    }

//用this来指代当前的对象
 public Car(String name, double price){
        this.name = name;
        this.price = price;
    }
//这才是将传入的name与price赋值给对象中的name与price

在成员方法中如果想要访问当前对象的成员则与上面同理。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值