java基础学习记录:8.4 this关键字

1、表示当前这个对象,也就是说当前谁调用这个方法则这个对象就是谁

2、可以访问本类中的实例变量

1.当局部变量和成员变量没有同名时,则编写属性名,等价于this

   属性名,如:id  等价于  this.id

public class Test {

	//成员变量
	int i = 5;
	
	public void print() {
		//局部变量
		int i = 6;
		System.out.println("局部变量i:" + i);
		System.out.println("成员变量i:" + this.i);
	}
	
	public static void main(String[] args) {
		Test test01 = new Test();
		test01.print();
	}
}

输出结果:


2.当局部变量和成员变量同名时,访问成员变量则必须写成,如:this.id;

public class Test {

	//成员变量
	int i = 5;
	
	public void print() {
		//局部变量
		int i = 6;
		System.out.println("局部变量i:" + i);
		System.out.println("成员变量i:" + this.i);
	}
	
	public static void main(String[] args) {
		//创建第一个对象
		System.out.println("第一个对象");
		Test test01 = new Test();
		test01.print();
		
		System.out.println("分界线--------------------------");
		
		//创建第二个对象
		System.out.println("第二个对象");
		Test test02 = new Test();
		test02.i = 10;
		test02.print();
	}
}

 输出结果为:


3、可以访问本类中的实例方法

       1.如:方法名称([参数列表])   等价于  this.方法名称([参数列表]) 

public class Test {

	//成员变量
	int i = 5;
	
	public void print() {
		//局部变量
		int i = 6;
		System.out.println("局部变量i:" + i);
		System.out.println("成员变量i:" + this.i);
	}
	
	public void print02() {
		this.print();
	}
	
	public static void main(String[] args) {
		//创建第一个对象
		System.out.println("第一个对象");
		Test test01 = new Test();
		test01.print();
		
		System.out.println("分界线--------------------------");
		
		//创建第二个对象
		System.out.println("第二个对象");
		Test test02 = new Test();
		test02.i = 10;
		//test02.print();
		//通过调用print02来调用print
		test02.print02();
	}
}

输出结果为:


4、可以访问本类中的其他构造方法

1.this();访问本类无参构造方法

2.this([参数1,参数2,参数3,.....]);访问带参构造方法

3.当使用this访问本类构造方法时,则只能编写在构造方法中,并且只能是该构造方法中的第一条语句

Student04类

public class Student04 {
	//构造方法
	public Student04() {
		
	}
	
	public Student04(int sid,String name) {
		this.sid = sid;
		this.name = name;
	}
	
	public Student04(int sid,String name,String sex,int age) {
		//将局部变量sid和name的值,给带两个参数的构造方法赋值
		
		this(sid,name);

		this.sex = sex;
		this.age = age;
	}
	
	//属性:学号、姓名、性别、年龄、所在班级
	int sid;
	String name;
	String sex;
	int age;
	
	public void stuinfo() {
		System.out.println("学生信息如下:");
		System.out.println("学号:" + sid);
		System.out.println("姓名:" + name);
		System.out.println("性别:" + sex);
		System.out.println("年龄:" + age);
	}
	
}

Test04类

public class Test04 {

	public static void main(String[] args) {
		//创建学生对象同时对学生中所有属性赋值
		Student04 stu04 = new Student04(40101,"张三","男",21);
		stu04.stuinfo();
	}
	
}

输出结果为:


4.构造方法不能出现递归调用,会出现死循环

例:

public Student04(int sid,String name,String sex,int age) {

		this(sid,name,sex,age);

	}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值