JAVA中的类和对象之this的详解
系列文章目录
第一章 JAVA中的类和对象之this的详解
目录
前言
一、为什么要有this引用
二、this的三种用法
1.this.成员变量
2.this.成员方法
3.this()调用其它的构造方法
三、this的引用特性
前言
JAVA编译器给每个“成员方法”增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问,这种引用方法便称之为——this引用。
一、为什么要有this引用
当类中定义了普通成员变量后,普通成员函数可以调用成员变量,从而对相应的对象进行赋值操作。然而,当成员函数所传递的形参和成员变量同名时,函数内部是优先表示形参。那么如何对成员变量赋值呢?
如下程序,当没有加this时,输出结果按默认0值:
public class Date {public int year;public int month;public int day;public void SetDay(int year,int month,int day){year = year;month = month;day = day;}public void printDate(){System.out.println(year+"/"+month+"/"+day);}public static void main(String[] args) {Date d = new Date();d.SetDay(2022,22,22);d.printDate();}
}
当加上this后:
public void SetDay(int year,int month,int day){this.year = year;this.month = month;this.day = day;}
二、this的三种用法
1.this.成员变量
以上例子中有,这里就不再赘述。
2.this.成员方法
与this.成员变量相同,记住this就是代表该对象即可(该对象的方法)!!!
如下便是简例:
public Date() {this.setDate(2546, 88, 99);}
3.this()调用其它的构造方法
在构造方法中,可以通过this调用其它构造方法来简化代码
public Date() {this(2022,22,22);}public Date(int year,int month,int day){this.year = year;this.month = month;this.day = day;}
注:this()必须是构造方法中的第一条语句,否则报错;
不能递归使用this调用构造方法。
三、this的引用特性
- this的类型:那个对象调用,就是哪个对象的引用类型
- this只能在成员方法中使用
- 在成员方法中,this只能引用当前对象,不能再引用其它对象,具有final属性
- this是成员方法第一个隐藏的参数,编译器会自动传递
- this不能为空!!!
好啦,今天有关this的知识就讲到这里了,有问题的兄弟可以在下方留言或者私信我哦!
JAVA中的类和对象之this的详解相关推荐
- Java中final类是存放在哪_详解Java中的final关键字
1 修饰属性或者变量 无论属性是基本类型还是引用类型,作用都是变量里面存放的"值"不可变 经常和static关键字一起使用,作为常量 1 基本类型,变量放的是实实在在的值,如1,& ...
- 12月29日--Java中有关类与对象的学习记录
1.12月29日第一课记录 Java中有关类与对象的学习记录 一.基本概念部分 1.类:具有相同.相似的属性.特征.行为方式以及功能的一类事物的总称 (举例:一类用户,如淘宝用户) 类是对象的模板 是 ...
- 面向对象系列教材 (一)- Java中的类和对象
面向对象系列教材 (一)- Java中的类和对象 本章节会引入面向对象的基本概念 (但是不会深入展开,仅仅是引入. 深入的学习会在后续的类和对象以及接口与继承 中展开) 相信你肯定玩过DOTA或者LO ...
- java中的类和对象(重点)超详细
java中的类和对象 1.类与对象的初步认知 2.类和对象的实例化 3.类的成员 3.1.字段,属性,成员变量 3.2.方法 3.3.static 关键字 3.4.小结 4.封装 4.1.privat ...
- decimal类型对象里面定义什么类型_MySQL中Decimal类型和Float Double的区别(详解)
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- python中requests库的用途-python中requests库session对象的妙用详解
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...
- Java中print、printf、println的区别 详解
Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...
- 3.JAVA基础复习——JAVA中的类与对象
什么是对象: 就是现实中真实的实体,对象与实体是一一对应的,现实中每一个实体都是一个对象在. JAVA中的对象: Java中通过new关键字来创建对象. 类: 用JAVA语言对现实生活中的事物进行描述 ...
- java中的类与对象(浅谈)
java中,用"类"来描述"对象",对象可以是现实世界中的一切事物. 类 可以看成 对相似事物 的抽象. 比如老师和学生,他们都属于对象,他们都有姓名,性别,年 ...
最新文章
- 如果宁静是 Oracle,万茜、张雨绮、黄圣依是什么?
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
- 抽象方法可以有方法体_抽象类和模板方法设计模式
- 什么是Java多态?如何实现Java多态?
- 视觉硬件 - 相机 镜头 选型
- 从工作实践中积累Linux常用脚本(一)
- 机器学习第九篇:详解Adaboost算法
- rsync同步服务配置手记
- signature=267d7b238718fa0d900b4fd94e068fe9,Modelowanie widm NMR kwadrupolowych jąder
- 人生规划:20岁到60岁我该干什么
- 大数据之-Hadoop之HDFS的API操作_判断是文件还是文件夹---大数据之hadoop工作笔记0062
- SpringMVC_02
- Foobar2000的配置及优化
- 《低代码指南 》——LCHub应用参谋的适用场景
- win10专业版激活时提示无法连接到internet怎么办?
- access网格线方向微为垂直_设置ACCESS2010背景和网格线
- 2年修完6个清华CS硕士学位第3周反思报告
- 麻雀虽小五脏俱全,中小企业的知识管理须重视
- Linux Ubuntu快捷键技巧
- 虚拟机服务器磁盘扩容步骤,vmware ESXi 虚拟机扩容磁盘空间