Java中this关键字的详解
在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关键字的详解相关推荐
- Java中的main()方法详解
源文作者:leizhimin 源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...
- java中list和map详解
java中list和map详解 一.概叙 List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口, List下有ArrayList,Vector,LinkedL ...
- java中的进制输出转换_Java I/O : Java中的进制详解
作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...
- java中Freemarker list指令详解
java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...
- Java中的Runtime类详解
Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...
- java中properties作用,Java中Properties的使用详解
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...
- C++中const关键字用法详解及实例和源码下载(一)
最近在学习C++基础部分,看了两天书,已经看过了一遍,半知半解,回过头来重新看第二遍,深入了解一下C++的基础知识.现在读到了const关键字的用法,书上面讲解的时候并没有给出完整的实例,只是理论的讲 ...
- Java 中的伪共享详解及解决方案
转载自 Java 中的伪共享详解及解决方案 1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的.目前主流的 CPU Cache 的 Cache Line 大小都是 ...
- 站长在线Python教程精讲:在Python函数中的关键字参数详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中的关键字参数详解>.本文的主要内容有:关键字参数的含义和关键字参数的应用举例. 目录 1.关键字参数的含 ...
最新文章
- 安全函数不安全-多线程慎用List.h
- Serval and Parenthesis Sequence
- Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
- 二级菜单HTML原理,CSS多级菜单的实例代码讲解
- 6-23 分离链接法的删除操作函数 (20 分)
- Hadoop入门(十四)Mapreduce的数据去重程序
- linux用分词系统,Linux(CentOS 6.4)Solr4.8.1中文分词配置(IK分词)
- 随想系列_4_从电影《可可西里》说起
- apscheduler 脚本执行失败_在脚本中使用 Bash 信号捕获 | Linux 中国
- raspberry pi_使用Raspberry Pi和pi-hole阻止网络上的广告
- 英语学习笔记2019-11-29
- 计算机组成原理——第八章
- Powerbuilder 12.5 下载地址
- html页面自动登录,抓取网页时自动登录和自动输入验证码
- 千里达v1000时速_《美骑评测》第10期 千里达V1000山地车 评测
- Unity3D 场景中图片模糊问题
- 用户需求和产品需求的采集、分析、筛选和管理
- 爪哇国新游记之十六----泛型单链表类
- IOCP之accept、AcceptEx、WSAAccept的区别 .
- 续——老机焕发青春——win8 ramos 的本地安装 (涉及vhd差分盘)