系列文章目录

第一章 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的引用特性

  1. this的类型:那个对象调用,就是哪个对象的引用类型
  2. this只能在成员方法中使用
  3. 在成员方法中,this只能引用当前对象,不能再引用其它对象,具有final属性
  4. this是成员方法第一个隐藏的参数,编译器会自动传递
  5. this不能为空!!!

好啦,今天有关this的知识就讲到这里了,有问题的兄弟可以在下方留言或者私信我哦!

JAVA中的类和对象之this的详解相关推荐

  1. Java中final类是存放在哪_详解Java中的final关键字

    1 修饰属性或者变量 无论属性是基本类型还是引用类型,作用都是变量里面存放的"值"不可变 经常和static关键字一起使用,作为常量 1 基本类型,变量放的是实实在在的值,如1,& ...

  2. 12月29日--Java中有关类与对象的学习记录

    1.12月29日第一课记录 Java中有关类与对象的学习记录 一.基本概念部分 1.类:具有相同.相似的属性.特征.行为方式以及功能的一类事物的总称 (举例:一类用户,如淘宝用户) 类是对象的模板 是 ...

  3. 面向对象系列教材 (一)- Java中的类和对象

    面向对象系列教材 (一)- Java中的类和对象 本章节会引入面向对象的基本概念 (但是不会深入展开,仅仅是引入. 深入的学习会在后续的类和对象以及接口与继承 中展开) 相信你肯定玩过DOTA或者LO ...

  4. java中的类和对象(重点)超详细

    java中的类和对象 1.类与对象的初步认知 2.类和对象的实例化 3.类的成员 3.1.字段,属性,成员变量 3.2.方法 3.3.static 关键字 3.4.小结 4.封装 4.1.privat ...

  5. decimal类型对象里面定义什么类型_MySQL中Decimal类型和Float Double的区别(详解)

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

  6. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  7. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

  8. 3.JAVA基础复习——JAVA中的类与对象

    什么是对象: 就是现实中真实的实体,对象与实体是一一对应的,现实中每一个实体都是一个对象在. JAVA中的对象: Java中通过new关键字来创建对象. 类: 用JAVA语言对现实生活中的事物进行描述 ...

  9. java中的类与对象(浅谈)

    java中,用"类"来描述"对象",对象可以是现实世界中的一切事物. 类 可以看成 对相似事物 的抽象. 比如老师和学生,他们都属于对象,他们都有姓名,性别,年 ...

最新文章

  1. 如果宁静是 Oracle,万茜、张雨绮、黄圣依是什么?
  2. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
  3. 抽象方法可以有方法体_抽象类和模板方法设计模式
  4. 什么是Java多态?如何实现Java多态?
  5. 视觉硬件 - 相机 镜头 选型
  6. 从工作实践中积累Linux常用脚本(一)
  7. 机器学习第九篇:详解Adaboost算法
  8. rsync同步服务配置手记
  9. signature=267d7b238718fa0d900b4fd94e068fe9,Modelowanie widm NMR kwadrupolowych jąder
  10. 人生规划:20岁到60岁我该干什么
  11. 大数据之-Hadoop之HDFS的API操作_判断是文件还是文件夹---大数据之hadoop工作笔记0062
  12. SpringMVC_02
  13. Foobar2000的配置及优化
  14. 《低代码指南 》——LCHub应用参谋的适用场景
  15. win10专业版激活时提示无法连接到internet怎么办?
  16. access网格线方向微为垂直_设置ACCESS2010背景和网格线
  17. 2年修完6个清华CS硕士学位第3周反思报告
  18. 麻雀虽小五脏俱全,中小企业的知识管理须重视
  19. Linux Ubuntu快捷键技巧
  20. 虚拟机服务器磁盘扩容步骤,vmware ESXi 虚拟机扩容磁盘空间

热门文章

  1. 正点原子STM32精英版LCD实验白屏
  2. vue 导出excel,合并单元格,修改样式
  3. 象棋参谋 v1.1 免费版 官网
  4. 果蔬识别轻松帮你区分车厘子与大樱桃
  5. java中 像素、英寸、厘米的换算
  6. 在Windows10操作系统下安装Ubuntu20.04 LTS,实现双系统
  7. 语音识别中使用Cool Edit Pro的使用注意事项
  8. python气象学_Python气象绘图教程(二)
  9. Matlab中计算传递函数表示控制系统的框图
  10. 计算机一级考试:选择题汇总E(精简版)