还不懂this关键字?一分钟彻底弄懂this关键字
citgpt 2024-11-25 10:01 6 浏览 0 评论
大家有没有考虑过,在一个类的构造器中,我们为什么要使用this.属性而不直接使用属性呢?毕竟一个类中,不管属性被什么关键字修饰,在类中都可以访问。随着这个问题,今天带大家深入分析一下Java中this关键字,让大家彻底理解this关键字.
构造器中的this
1.1初识this:
public class Account {
private String name;
private double balance;
private String pwd;
//Account类的一个构造器
public Account (String name,double balance,String pwd){
//构造器的实现---初始化对象
this.name = name;
this.balance = balance;
this.pwd = pwd;
}
}
- 【思考】:不用this会怎么样?
class Account {
private String name;
private double balance;
private String pwd;
//Account类的一个构造器
public Account(String name, double balance, String pwd) {
//构造器的实现---初始化对象
//不用this
name = name;
balance = balance;
pwd = pwd;
}
public void showInfo() {
System.out.println("name:" + name + " " + "balance:" + balance + " " + "pwd:" + pwd);
return;
}
}
public class Main {
public static void main(String[] args) {
Account account = new Account("Yaoyao", 20, "123456");
account.showInfo();
}
}
【运行结果】:
【解释】:
- 我们以为左边的变量是成员变量,但实际上,左边变量是局部变量!即,局部变量赋值给了局部变量,成员变量根本没变,依旧是默认值!
- 方法中的变量为局部变量,存储在栈中,作用范围是方法内;我们想通过构造器初始化的是成员变量,存储在堆中,作用范围是本类内部。
当成员变量&局部变量重名时,优先使用局部变量。关键还是看有没有局部变量,有局部变量优先使用局部变量,否则属性—就近原则!
1.2:为何要this?
?通过上面的分析,我们发现,当局部变量&属性同名时,在构造器中无法对属性初始化成功。我们在想,如果能被赋值的变量,不是构造器中的局部变量,而是成员变量这个问题不就解决了嘛?对的,所以就有了this!!!
public class Account {
private String name;
private double balance;
private String pwd;
//Account类的一个构造器
public Account (String name,double balance,String pwd){
//构造器的实现---初始化对象
this.name = name;
this.balance = balance;
this.pwd = pwd;
}
}
这样,通过this.属性来表明这是一个成员变量,与局部变量以示区分.
this介绍
2.1:this到底是什么?
- 比较官方的解释:
Java虚拟机(JVM)会给每个对象分配一个this,来代表当前对象,
this其实可以理解为对象的一个属性(成员变量),但是这个属性是隐藏的.即this相当于对象的一个隐藏属性。
和对象的其他属性一样,在new一个新对象的时候,会在堆内存为对象分配空间,属性就储存在这份空间中。且该this属性的值就是对象在堆内存中地址,即this指向该对象(this代表该对象).
【重点】综上:this是对象的隐藏属性(本质就是一个普通的成员变量),和其他non-static属性一样,在创建对象的时候会为每个新对象分配该对象的专属成员变量(this就是其中一个),this这个成员变量存储在堆内存中,该变量的值是所属对象在堆内存的地址。
即:创建1000个对象,就有1000个this,它们之间相互独立(哎呀,this就是普通的成员变量而已啦!)
使用细节&注意事项
this关键字可以用来区分当前类的属性&局部变量。
使用this关键字可以用来访问本类的实例属性、实例方法、构造器(“实例”指的就是non-static修饰 的)
访问本类实例属性:this.属性
访问本类实例方法:this.方法名(参数列表)
访问本类构造器:this(参数列表)
【注意】:this(参数列表)来访问本类构造器需要注意以下几点
只能在构造器中使用this(参数列表);即在一个构造器中访问本类的另外一个构造器。(默认构造器行首是super();,)。
显示使用this()时,默认的super()就被覆盖
this(参数列表)和super(参数列表)在构造器中有且只能存在一个。
若在构造器中使用this(参数列表),则此语句只能位于构造器第一行
类中的静态方法static method中不能使用this。很简单理解:static方法中不能出现成员变量(this依赖对象,而static不依赖于对象,类名.静态方法时,没有对象啊,你让this情何以堪!它都不知道自己属于哪个对象!)
- 上一篇:Java this关键字详解
- 下一篇:this 关键词的4种用法
相关推荐
- 外贸网站建设要多少钱?外贸网站建设周期要多久
-
大家好,我是【无锡柠萌网络lemon56.com】的小美,今天分享:外贸网站建设要多少钱?外贸网站建设周期要多久您关注的问题·FAQ外贸网站建设中遇到的常见问题,让您少走弯路,提高效率!...
- 500块搭建一个可以卖货的跨境电商独立站,包括服务器和域名吗?
-
用500元搭建一个可以卖货的跨境电商独立站,虽然有一定挑战性,但通过精打细算和选择合适的工具和服务,仍然是有可能的。以下是一些建议,帮助你在预算范围内实现这个目标,包括服务器和域名的选择。...
- 无锡网络公司设计搭建阀门网站一般要多少钱?
-
无锡网络公司设计搭建阀门网站一般要多少钱?这是一个涉及多方面因素的复杂问题,其费用因网站规模、功能需求、设计复杂度及后续维护等因素而异。首先,从基础成本出发,域名注册是搭建网站的第一步,费用通常在几十...
- 定制化网站开发大概多少钱
-
定制化网站开发的价格因项目的复杂性、功能需求、设计要求和开发时间等因素而异。以下是一些常见的定制化网站开发价格范围,供参考:1.简单的定制化网站开发:一般来说,一个简单的定制化网站开发项目可能需要花...
- 9月安卓手机性能排行榜出炉:前十名差距仅为7%
-
时间已经进入9月,按照安兔兔目前的安卓手机性能榜单显示,红魔9SPro+依旧力压其他热销手机成为榜首,可见游戏定位的这款手机,在性能上确实非常的出色。不过,笔者也发现了一个问题,其中前十名中得分最高...
- 装修公司怎么在网络平台接单?实现高效获客
-
装修行业正经历着深刻的变革,随着消费者需求的日益多样化与个性化,传统的线下获客方式已难以满足装修公司的业务需求。因此,装修公司必须紧跟时代步伐,充分利用网络平台实现高效获客。1、入驻装修接单平台:壹品...
- 企业如何利用二维码进行线上营销?
-
#企业如何利用二维码进行线上营销?#企业利用二维码进行线上营销,可以从以下几个方面入手:?1.设计创意二维码?:...
- 家电销售该怎么线上拓客
-
社交媒体平台:利用微信、微博、抖音等平台,定期发布家电产品的信息、使用心得、促销活动等内容。引流靠手动一定是不行的,所以一般使用点软件肯定没错,最近用了款比较冷门的APP,"里德助手Plus...
- pop社交软件,脱单软件排行榜
-
在交友软件里面脱单是非常明确的一件事,各年龄各社交平台上的女人都是有所不同的,具体问题具体分析一下。接下来就说说又哪些比较优质的恋爱脱单软件。...
- 手机处理器最新跑分排行榜,你的手机什么水平?
-
手机处理器最新跑分排行榜,你的手机什么水平?第1名:天玑9300第2名:骁龙8Gen3第3名:A17Pro第4名:天玑9200第5名:骁龙8Gen2第6名:骁龙8Gen1...
- 继番茄小说后,字节再推免费网文 App“蛋花小说”和“常读小说”
-
据Tech星球报道,字节跳动公司近期推出了两款全新的免费网文App,分别是“蛋花小说”和“常读小说”。这两款产品的开发公司分别为湖北福瑞兴网络科技有限公司和湖北聚合润网络科技有限公司,均为字节跳动的1...
- 全世界最好用的AI软件排名是?
-
Hey小伙伴们,今天咱们来聊聊那些让人爱不释手的AI神器!在这个智能化时代,谁还没几个拿得出手的AI软件呢?别急,我这就给你盘点一波全球超火的AI软件,保证让你大开眼界!...
- 手机root软件哪个成功率高?手机root软件排行榜2025
-
作为游戏玩家,欲在手游中畅玩无阻,root权限不可或缺,可优化画质、启用辅助。2025年已至,究竟哪些手机root软件能脱颖而出?哪款软件的root成功率会独占鳌头?一、手机root软...
- 独立站新手教程引流篇:如何优化谷歌广告投放效果?
-
随着谷歌广告单价的持续上涨,如何在提升投放效果的同时,降低推广费用成为每一个独立站卖家的必修课。因此新手卖家在完成初步的广告投放流程后,最重要的就是了解一下谷歌广告优化的基础策略。设置转化跟踪即利用G...
- 云媒易:干货知识分享!海外推广的渠道有哪些,如何正确的选择?
-
越来越多的海外企业或国内的跨境商家认识到海外的网络营销的作用,开展线上外贸营销,渠道是非常的重要,那么海外的推广渠道有哪些?企业应该如何选择呢?1、社交媒体推广社交媒体推广是现在海外推广方式中最热门的...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracleclient (56)
- springbatch (59)
- oracle恢复数据 (56)
- 简单工厂模式 (68)
- 函数指针 (72)
- fill_parent (135)
- java配置环境变量 (140)
- linux文件系统 (56)
- 计算机操作系统教程 (60)
- 静态ip (63)
- notifyicon (55)
- 线程同步 (58)
- xcode 4 5 (60)
- 调试器 (60)
- c0000005 (63)
- html代码大全 (61)
- header utf 8 (61)
- 多线程多进程 (65)
- require_once (60)
- 百度网盘下载速度慢破解方法 (72)
- 谷歌浏览器免费入口 (72)
- npm list (64)
- 网站打开速度检测 (59)
- 网站建设流程图 (58)
- this关键字 (67)