Java中的this关键字(三种用法)

Java中的this关键字(三种用法)this关键字的三种用法:通过this关键字可以明确的访问一个类的成员变量,解决与局部变量名称冲突问题通过this关键字调用成员方法在构造方法中访问构造方法使用this([参数1,参数2,…])

大家好,又见面了,我是你们的朋友全栈君。

this关键字的三种用法:

  • 通过this关键字可以明确的访问一个类的成员变量,解决成员变量与局部变量名称冲突问题。
    实例:
public class Student { 
   
   //定义四个成员变量
   String name;
   int age;
   long phone;
   String address;
   //有参构造方法
   public Student(String name, int age, long phone, String address) { 
   
        this.name = name;
        this.age = age;
        this.phone = phone;
        this.address = address;
    }
   //成员变量的get/set方法
   public String getName(){ 
   
       //访问的是成员变量name
       return this.name;
   }
   
   public void setName(String name) { 
   
        this.name = name;
    }
}

上面代码中构造方法中定义的参数name,age等它是局部变量,在类中也定义了name,age等成员变量,在构造方法中使用age则是访问局部变量,如果想访问类中的成员变量,使用this.age则是访问成员变量。

  • 通过this关键字调用成员方法
    实例:
public class Student { 
   

    public void test1(){ 
   
        System.out.println("test1方法执行了......");
    }
    
    public void test2(){ 
   
    	//调用test1()方法
        this.test1();
    }
}

在test2()方法中通过this.test1()访问test1()方法,注意此处的this关键字可以不写,效果是一样的。

public class Student { 
   

    public void test1(){ 
   
        System.out.println("test1方法执行了......");
    }
    
    public void test2(){ 
   
    	//调用test1()方法
        test1();
    }
}
  • 在构造方法中访问构造方法使用this([参数1,参数2,…])
    实例:
public class Student { 
    
	//成员变量name
    String name;
    
    public Student() { 
   
        System.out.println("这是无参构造方法....");
    }

    public Student(String name) { 
   
    	//调用无参构造方法
        this();
        this.name = name;
    }

    public void printName(){ 
   
        System.out.println("姓名:" + name);
    }

    public static void main(String[] args) { 
   
        Student student = new Student("小明");
        student.printName();
    }
}

在有参构造方法中调用了无参构造方法,在使用this调用构造方法时有以下注意几点:

  • 只能在构造方法中使用this()调用其他的构造方法,不能在成员方法中使用。
  • 在构造方法中使用this()调用构造方法的语句必须位于第一行,而且只能出现一次。
  • 不能在一个类中的两个构造方法中使用this()互相调用。
public class Student { 
   
	//成员变量
    String name;
    
    public Student() { 
   
        System.out.println("无参构造方法...");
        //错误,必须位于第一行
        this("张三");
    }
    
    public Student(String name) { 
   
        this.name = name;
    }
  }
public class Student { 
   
    String name;//成员变量
    
    public Student() { 
   
    	//错误,不能相互调用
        this("张三");
    }
    
    public Student(String name) { 
   
    	//错误,不能相互调用
        this();
    }
}

加油吧!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148640.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 上午8:58
下一篇 2022年6月16日 上午8:58


相关推荐

  • Caffeine 缓存

    Caffeine 缓存简介在本文中 我们来看看 Caffeine 一个高性能的 Java 缓存库 缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item 回收策略为在指定时间删除哪些对象 此策略直接影响缓存的命中率 缓存库的一个重要特征 Caffeine 因使用 WindowTinyLf 回收策略 提供了一个近乎最佳的命中率 填充策略 Population Caffein

    2026年3月19日
    2
  • 永失我爱[转贴]

    永失我爱[转贴]永失我爱时间过的飞快 我的孩子走了五年了 我终于敢拿起我的笔写下那一段尘封的往事 很多朋友不让我写 怕我撕开自己的血淋淋的伤疤 怕我痛 但是朋友啊 我知道你们是爱我的 但你们哪里知道 写出来对我来讲才是最好的解脱 才了却了我的一个心愿 因为 我在这五年里 没有一天不想念我的孩子 不管我如何努力让自己忘却 但总会在某一个不经意的时刻 某一个不经意的碰触 让我泪流满面 我永远也不能忘记臭臭给我带来的快

    2026年3月26日
    3
  • The package javax.swing is not accessible错误的三种解决办法,亲测有效

    The package javax.swing is not accessible错误的三种解决办法,亲测有效按照学长给出的解决方案 eclipse 中的解决办法 solution 在我们这个报错的 java 文件所在的项目中 选择对应的 JRE 系统库 右击 JRE 系统库 改变 执行环境 那一栏 我这里是因为 jdk 13 版本导入不了 javax swing 的包 所以我按照学长的建议 改成了 jdk1 8 的版本

    2026年3月19日
    2
  • 微信内测聊天界面内置腾讯元宝

    微信内测聊天界面内置腾讯元宝

    2026年3月12日
    9
  • 设计模式 | 适配器模式及典型应用

    设计模式 | 适配器模式及典型应用适配器模式适配器模式(AdapterPattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适…

    2022年7月25日
    12
  • webservice发送短信本地部署可以但是服务器部署发送短信息中文乱码

    webservice发送短信本地部署可以但是服务器部署发送短信息中文乱码

    2020年11月9日
    325

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号