| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【开开心心学java快快乐乐写代码】this引用 -> 正文阅读 |
|
[Java知识库]【开开心心学java快快乐乐写代码】this引用 |
目录 1、this引用1.1为什么要有this引用先来看一个日期类例子:
运行结果:? ?以上代码定义了一个日期类,然后main方法中创建了三个对象,并通过Date类中的成员方法对对象进行设置和打印,代码整体逻辑非常简单,输出也是我们需要的结果。 但是仔细一想,如果我们将形参的变量名改的和成员变量名一样了呢? 比如我们将Date类中的setDate()方法不小心写成了这个样子呢: public void setData(int year,int month,int day){ year=year; month=month; day=day; } 再来看一下输出结果: 这个输出结果就不是我们所需要的了。 可是为什么会这样呢? 我们可以发现,就拿year这个变量来说,存在成员变量year和方法setDate()中的参数year,成员变量中变量year的作用域是整个类,而方法setDate()中的参数year的作用域就只是在方法setDate()内部,因此可以发现两个year的作用范围有了冲突。
1.2什么是this引用java编译器给每一个成员方法都增加了一个隐藏的引用类型参数,该引用参数指向了当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有对成员变量的操作,都是通过该引用去访问。只不过该引用对用户来说是透明的,用户不需要进行传递,编译器会自己加上。 1.3this引用的特性
下图中的Date类也是可以通过编译的 2、this引用的三种方法2.1 使用this引用来访问成员变量class Data{ public int year; public int month; public int day; public void setData(int year,int month,int day){ this.year=year; this.month=month; this.day=day; } 2.2 使用this引用调用构造方法
运行结果: ? 注意: (1)只能在构造方法中用this()调用其他构造方法,不能在成员方法中使用this()。 (2)this只能出现在构造方法的第一行,且只能出现一次。 (3)不能形成环,也就是不能在一个类中的两个构造方法中使用this()互相调用。 2.3使用this引用调用成员方法class Data{ public int year; public void setData(int year,int month,int day){ this.year=year; } public void printData(){ System.out.println(this.year); } public void printData1(){ this.printData(); } } 注意:在printData1()方法中通过this.printData1()访问printData()方法,注意此处的this关键字可以不写,效果是一样的。? 以上就是我要今天分享的内容啦,后续我还会继续更新的哒,常看我的博客会学到很多知识哦? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:16:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |