• 【java学习】this关键字(27)



    1. this是什么?

    1. 在 java 中,this关键字比较难理解,它的作用和其词义很接近。
      ①它在方法内部使用,即这个方法所属对象的引用;
      ②它在构造器内部使用,表示该构造器正在初始化的对象。

    2. this 表示当前对象,可以调用类的属性、方法和构造器

    3. 什么时候使用this关键字呢?
      当在方法内需要用到调用该方法的对象时,就用this

    2. this的作用

    先举例说明:

    1. 案例一
      错误写法:
    package day06;
    
    public class Person7 {
    	
    	public Person7(int age, String name) {
    		age = age;     //像这种情况编译器分不清哪个age是形参,哪个age是类的成员变量
    		name = name;   //同上
    	}
    	
    	int age;
    	String name;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    正确写法:

    package day06;
    
    public class Person7 {
    	
    	public Person7(int age, String name) {
    		this.age = age;    //通过this关键字表明this.age是Person7的成员变量,age是构造器的形参
    		this.name = name;  //同上
    	}
    	
    	int age;
    	String name;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 案例二
      更复杂的用法:
    package day06;
    
    public class Person7 {
    	
    	public Person7(int age, String name) {
    		this.age = age;
    		this.name = name;
    	}
    	
    	int age;
    	String name;
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    	public void setName1(String name) {
    		this.setName(name);   //name是setName1里传递过来的形参,然后传递给setName的形参
    		// this指类Person7(this.setName() = Person7.setName())
    	}
    	
    	public void showInfo() {
    		System.out.println("姓名:" + this.name);
    		System.out.println("年龄:" + this.age);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    1. 案例三
      this 可以作为一个类中,构造器相互调用的特殊格式
      代码如下:
    package day06;
    
    public class Person7 {
    	
    	public Person7() {
    		
    	}
    	
    	public Person7(int age) {
    		this.age = age;
    	}
    	
    	public Person7(String name) {
    		this();   // 等同于调用 无参构造器:public Person7()
    		this.name = name;
    	}
    	
    	public Person7(int age, String name) {
    		this(1);   // 等同于调用 有参构造器:public Person7(int age)
    		this.age = age;
    		this.name = name;
    	}
    	
    	int age;
    	String name;
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    	public void setName1(String name) {
    		this.setName(name);
    	}
    	
    	public void showInfo() {
    		System.out.println("姓名:" + this.name);
    		System.out.println("年龄:" + this.age);
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    总结:
    1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员
    2.在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this ,增强程序的阅读性
    3.this 可以作为一个类中,构造器相互调用的特殊格式

    注意:
    (1) 使用 this() 必须放在构造器的首行!
    (2) 使用 this 调用本类中其他的构造器,保证至少有一个构造器是不用 this 的。(实际上就是不能出现构造器自己调用自己

  • 相关阅读:
    90.STL-谓词的使用
    线上旧衣回收小程序,隐藏的蓝海回收市场
    网络工程师知识点4
    用ADAU1466开发板教你做音频开发,有手就行(一):芯片介绍
    java计算机毕业设计工资管理系统源码+mysql数据库+系统+lw文档+部署
    Java实验报告(二)
    零基础产品经理如何迅速学习Axure原型制作?快速上手攻略!
    设计模式之建造者模式
    php 打包下载
    Linux 安装apache
  • 原文地址:https://blog.csdn.net/weixin_44883789/article/details/133798825