在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;}
}


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


this.方法名称
用来访问本类的成员方法

          this();                              访问本类的构造方法()中可以有参数的 如果有参数 就是调用指定的有参构造注意事项:1.this() 不能使用在普通方法中 只能写在构造方法中2.必须是构造方法中的第一条语句

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

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


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

就不会有报错


Java中this关键字的详解相关推荐

  1. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  2. java中list和map详解

    java中list和map详解 一.概叙 List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口, List下有ArrayList,Vector,LinkedL ...

  3. java中的进制输出转换_Java I/O : Java中的进制详解

    作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...

  4. java中Freemarker list指令详解

    java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...

  5. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  6. java中properties作用,Java中Properties的使用详解

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...

  7. C++中const关键字用法详解及实例和源码下载(一)

    最近在学习C++基础部分,看了两天书,已经看过了一遍,半知半解,回过头来重新看第二遍,深入了解一下C++的基础知识.现在读到了const关键字的用法,书上面讲解的时候并没有给出完整的实例,只是理论的讲 ...

  8. Java 中的伪共享详解及解决方案

    转载自  Java 中的伪共享详解及解决方案 1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的.目前主流的 CPU Cache 的 Cache Line 大小都是 ...

  9. 站长在线Python教程精讲:在Python函数中的关键字参数详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中的关键字参数详解>.本文的主要内容有:关键字参数的含义和关键字参数的应用举例. 目录 1.关键字参数的含 ...

最新文章

  1. 安全函数不安全-多线程慎用List.h
  2. Serval and Parenthesis Sequence
  3. Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
  4. 二级菜单HTML原理,CSS多级菜单的实例代码讲解
  5. 6-23 分离链接法的删除操作函数 (20 分)
  6. Hadoop入门(十四)Mapreduce的数据去重程序
  7. linux用分词系统,Linux(CentOS 6.4)Solr4.8.1中文分词配置(IK分词)
  8. 随想系列_4_从电影《可可西里》说起
  9. apscheduler 脚本执行失败_在脚本中使用 Bash 信号捕获 | Linux 中国
  10. raspberry pi_使用Raspberry Pi和pi-hole阻止网络上的广告
  11. 英语学习笔记2019-11-29
  12. 计算机组成原理——第八章
  13. Powerbuilder 12.5 下载地址
  14. html页面自动登录,抓取网页时自动登录和自动输入验证码
  15. 千里达v1000时速_《美骑评测》第10期 千里达V1000山地车 评测
  16. Unity3D 场景中图片模糊问题
  17. 用户需求和产品需求的采集、分析、筛选和管理
  18. 爪哇国新游记之十六----泛型单链表类
  19. IOCP之accept、AcceptEx、WSAAccept的区别 .
  20. 续——老机焕发青春——win8 ramos 的本地安装 (涉及vhd差分盘)

热门文章

  1. 如何操作别人计算机,如何远程控制别人的电脑【图解】
  2. asp.net+sql数据库学生信息管理系统
  3. attention 汇总(持续)
  4. 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录
  5. UILabel实现自适应宽高需要注意的地方(三)
  6. 微信商户现金红包api php
  7. PHP:函数赋参数默认初值
  8. zoj2587唯一最小割
  9. (转)Oracle中通过位图索引提高查询效率
  10. python 列表生成式 字典生成式