Java中this关键字的详解

Java中this关键字的详解在 java 的学习中 当接触到类这一章的时候 就会避免不了的接触到 this 关键字 首先 this 关键字指向的是当前对象的引用作用 this 属性名称指的是访问类中的成员变量 用来区分成员变量和局部变量 重名问题 classTest 08 publ

在java的学习中,当接触到类这一章的时候,就会避免不了的接触到this关键字。

首先,this关键字指向的是当前对象的引用

作用:

             this.属性名称                

                   指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)

              

class Test_08{ public static void main(String [] args){ //调用无参构造函数, Person p1 = new Person(); p1.setAge(20); p1.setName("张三"); p1.setGender("男"); System.out.println(""+p1.getName()+" 今年"+p1.getAge()+"岁 性别为:"+p1.getGender()); } } class Person{ private String name; private int age; private String gender; Person(){} Person(String name,int age,String gender){ this.name = name; this.age = age; this.gender = gender; } public void setName(String name){ name = name; } public String getName(){ return name; } public void setAge(int age){ age = age; } public int getAge(){ return age; } public void setGender(String gender){ gender = gender; } public String getGender(){ return gender; } }

 

Java中this关键字的详解

对Test_08运行后发现,调用的set方法并没有对 对象中的变量进行赋值,是因为,传入的参数变量名与类中属性变量名重复,因此我们在set方法和有参构造方法中加上了this.类属性名称,这样就可以完成对 对象变量的赋值。如下图:

Java中this关键字的详解

             this.方法名称              

                                用来访问本类的成员方法

              this();                              

                                                    访问本类的构造方法

例如,当我们把this()放在有参构造函数的末尾时,例如用this(“哈哈”);我们先不管语法是否有错误,试着按照程序的运行来判断一下结果,我们可以看出,当在创建对象时,假定调用含有this(“哈哈”)的构造函数,则刚开始存放的值,会被this(“哈哈”)调用的只含有一个参数的构造函数覆盖,也就是说,最后的name会变成“哈哈”,这是与我们的初衷相违背的,而且运行结果也是报错,

当我们换到构造方法的第一句时,则不会有这种错误,因为它并不会影响到后面name的赋值。

Java中this关键字的详解

 

Java中this关键字的详解

 

我们接下来把this语句放在构造函数的第一句位置,

就不会有报错

Java中this关键字的详解

 

我的个人公众号:

憨憨的快乐生活

Java中this关键字的详解

想要学习和了解更多java相关知识,可以关注一下

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

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

(0)
上一篇 2026年3月20日 上午9:27
下一篇 2026年3月20日 上午9:28


相关推荐

  • android gradle下载慢的解决方法

    android gradle下载慢的解决方法用androidstudio开发时,导入的项目经常会用到各种gradle版本,不知道为何androidstudio下载gradle极慢,最后总是失败。https://services.gradle.org/distributions/这是gradle各版本的官方网站。在这网站上下载速度很快。下载的文件放哪里呢?放到以下对应的目录中。C:\Users\admin\.gradle\wrapper\dists\gradle-6.7-all\cuy9mc7upwgwgeb72wkcrup

    2022年6月24日
    35
  • 数据库隔离级别及原理

    数据库隔离级别及原理数据库的隔离级别是通过共享锁和排他锁实现的 锁又可以分为表锁 页锁 行锁数据库事务的隔离级别有 4 个 由低到高依次为 Readuncommit Readcommitte Repeatablere Serializable 这四个级别可以逐个解决脏读 不可重复读 幻读这几类问题 脏读 读到的不是最新的数据不可重复读 读到是是最新的数据 但是一个事务中如果多次读取 可能每次读到

    2026年3月16日
    2
  • 怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​

    怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​

    2026年3月12日
    1
  • ThinkPHP6.0 扩展类库目录(extend)

    ThinkPHP6.0 扩展类库目录(extend)本文转自辰风沐阳的 ThinkPHP6 0 扩展类库目录 extend 框架根目录下的 extend 目录称为扩展类库目录 用于存放一些自定义的类 只要符合自动加载的规范 命名空间 类名 文件名 就可以拿来直接使用 1 extend 目录的直接子内容假设在 extend 目录下创建一个 Upload php 文件 如果是 extend 目录的直接子内容则不需要添加命名空间 phpclassUplo 此时可以在控制器中直接使用 Upload 类 特别注意

    2026年3月18日
    2
  • 应用程序已被 JAVA 安全阻止的解决办法

    应用程序已被 JAVA 安全阻止的解决办法当运行程序的时候有这样的弹窗出现时    到控制面板中的程序里面选择Java    在弹窗的安全中进行设置,把安全级别调到高或者中,或者在编辑站点列表中添加url也可以,点击应用和确认后设置生效    …

    2022年7月8日
    22
  • MySQL高级配置

    MySQL高级配置

    2021年10月22日
    50

发表回复

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

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