踩雷构造方法

踩雷构造方法

构造方法的作用是给类中的变量进行初始化赋值,不是用来创建对象的

有有参情况下去使用无参去创建对象的时候就会报错

写有参数的构造方法时候就最好加上无参构造

构造方法里面局部变量名字与实例变量一样情况下要写this防止Java就近原则

 
 

这是详细代码,不想看详细的直接跳到最后

public class Student {
    int age;
    String name;
	public static void main(String[] args) {
		//调用构造方法,对类进行初始化
		Student s=new Student(666, "张三");
/*
new一个对象的时候要用到构造函数,
有两种方式:
第一种无参构造:Student s=new Student();这里使用的是Student的无参数构造方法,
第二种无参构造:Student s=new Student(666, "张三");这个是使用Student有参数构造方法,
判断无参有参就是看小括号内有没有传入实际参数
java规定在不写构造方法情况下,默认使用一个无参数的构造方法,
有有参就使用有参,没有就使用默认的无参
注意:
在有有参情况下去使用无参去创建对象的时候就会报错
综上所述:写有参数的构造方法时候就最好加上无参构造
	
 */

		  System.out.println(s);

	}
	public Student(int a,String n){//构造方法,构造方法与类同名
		age=a;
		name=n;
/*		
或者age=a;与name=n;写为this.age=a;  this.name=n
只要构造方法里面形参名字与上面实例变量名字不一样就可以不写this
如果名字一样就必须写this,因为this就是来区分是成员变量还是局部变量
Java有就近原则,如果名字一样,不写this就会传递给较近的变量
比如局部变量名字与实例变量一样却不写this,
	public Student(int age,String name){//这里局部变量age与name
		age=age;
		name=name;
//右边的变量age与name就是上面局部传递过来的
//本来正常情况下局部传递过来的变量赋值给左边的age与name,左边的age与name再传递给最上面的实例变量age与name
//但是因为Java就近原则,此时上面局部传递过来的变量age与name赋值给了左边的age与name,左边的age与name又传递给上面局部的age与name
//所以在局部变量名字与实例变量一样情况下要写this防止Java就近原则	
*/
	}

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


/*
 注意:构造方法不是用来创建对象的
实际上,在构造方法执行之前,类的内存空间已经开辟完成了,意思就是说对象已经创建了,
这步是由new关键字来完成的,
而构造方法的作用是给类中的变量进行初始化赋值
假设,假设构造方法是用来创建对象用的,就无法解释抽象类中为什么允许构造方法的存在,
抽象类无法实例化,不能被创建,但是抽象类中允许构造方法的存在

所以:构造方法是给类中的变量进行初始化赋值
*/

注意:不重写toString那打印输出的是内存地址
 

D:\Typora图片\1597626493258.png

 

重写toString或者直接生成toString

这里采用eclipse自动生成

在这里插入图片描述

 
 
在这里插入图片描述

 
 

在这里插入图片描述

运行结果

在这里插入图片描述

 
 

踩雷代码

public class Student {
    int age;
    String name;
	public static void main(String[] args) {		
		Student s=new Student(666, "张三");
		  System.out.println(s);
	}
	public Student(int a,String n){
		age=a;
		name=n;

	}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值