您好,欢迎来到年旅网。
搜索
您的当前位置:首页2020/06/16学习笔记(this关键字)

2020/06/16学习笔记(this关键字)

来源:年旅网

this关键字的作用

class Student
{
    String name;
    int age;

    public Student(String name, int age)
    {
        //this.name = name;
        this(name); // 调用了本类中只有一个参数的构造函数
        this.age = age;
        System.out.println("两个参数的构造方法被调用了");
    }

    public Student(String name)  // 被调用的构造函数
    {
        this.name = name;
        System.out.println("一个参数的构造方法被调用了");
    }

}

public class thisTest1
{
    public static void main(String[] args)
    {
        Student s = new Student("铁蛋", 10);
        System.out.println("小孩叫:" + s.name + ", 今年" + s.age + "岁");

    }
}

/*结果:一个参数的构造方法被调用了
两个参数的构造方法被调用了
小孩叫:铁蛋, 今年10岁*/
class Animal
{
	String name = "狗";
	String color;
	public void eat(){
		String name = "老鼠";
		System.out.println(name + "在吃...");  // "老鼠在吃..."
	}
}
/*eat()函数先在本程序块中查找是否有name变量,如果找到,比如name="老鼠",就不会再去堆内存中查找。*/
class Demo
{
	public static void main(String[] args)
	{
		Animal a = new Animal();
		a.eat();	
	}
}

// 结果:老鼠在吃...

class Animal
{
	String name = "狗";
	String color;
	public void eat(){
		String name = "老鼠";
		System.out.println(this.name + "在吃...");  // "狗在吃..."
	}
}
/*eat()函数先在本程序块中查找是否有name变量,如果找到,比如name="老鼠",就不会再去堆内存中查找,
如果在程序块中出现"this.name",程序就会去堆内存中查找对象中的name变量。*/
class Demo
{
	public static void main(String[] args)
	{
		Animal a = new Animal();
		a.eat();	
	}
}
class Student
{
	String name;
	int age;
	
	public Student(String name, int age)
	{
		name = name; // 此处相当于是局部变量给局部变量赋值,而成员变量并没有获得赋值
		age = age;
	}
	
}

class Demo
{
	public static void main(String[] args)
	{
		Student s = new Student("铁蛋", 10);
		System.out.println("小孩叫:" + s.name + ", 今年" + s.age + "岁");
		// 所以这里的成员变量s.name(String类型)仍然是初始值null,而s.age的初始值是0
	}
}
//结果:小孩叫:null, 今年0岁

public Student(String name, int age)
	{
		this.name = name; // 这样写就没问题了,this.name就是指的成员变量
		this.age = age;
	}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务