Java学习之this关键字

目录

一、引入this关键字

二、this入门

三、this本质

三、this使用细节

四、This关键字练习题


一、引入this关键字

在构造器内完成对象属性的初始化

public class This01{
	//编写一个main方法
	public static void main(String[] args){
		Dog d1 = new Dog("大壮", 3);
		d1.info();
	}
}

class Dog{//类

	String name;
	int age;
	public Dog(String dName, int dAge){//构造器
		name = dName;
		age = dAge;
	}

	public void info(){//成员方法,输出属性信息
		System.out.println(name + "\t" + age + "\t");
	}

}

运行结果

 如果构造器的形参能够直接写成属性名

即String name, int age

public class This01{
	//编写一个main方法
	public static void main(String[] args){
		Dog d1 = new Dog("大壮", 3);
		d1.info();
	}
}

class Dog{//类

	String name;
	int age;
	
	public Dog(String name, int age){//构造器
		name = name;//null
		age = age;//0
	}

	public void info(){//成员方法,输出属性信息
		System.out.println(name + "\t" + age + "\t");
	}

}

 编译结果

原因分析:变量的作用域原则

构造器里的name和age变成了局部变量(其作用域只存在于这个构造器内),而不是属性

但是方法info()里的输出的name和age还是指的属性的name和age,所以还是输出null和0

解决这个问题:this关键字

二、this入门

this代表当前对象  

eg:小明说:我的眼睛;小红说:我的眼睛;两人都说了“我的”,但是指向的是不同的眼睛

每个对象都有一个this,但是指向的是不同的对象

public class This01{
	//编写一个main方法
	public static void main(String[] args){
		Dog d1 = new Dog("大壮", 3);
		d1.info();
	}
}

class Dog{//类

	String name;
	int age;
	
	public Dog(String name, int age){//构造器
		this.name = name;
		this.age = age;
	}

	public void info(){//成员方法,输出属性信息
		System.out.println(name + "\t" + age + "\t");
	}

}

结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值