this关键字

一、this关键字的意义

1、代表当前对象

2、this就是所在函数所属对象的引用,简单来说,哪个对象调用了this所在的函数,this就代表哪个对象

3、如下图,this代表的就是对象p,如右边内存图解,this会通过堆内存中新建对象的首地址,指向新建的对象

二、this关键字的应用(一个类中除静态外的成员,如果要运行,就必须得被对象调用

1、当成员变量和局部变量重名,可以用关键字this区分,如:

  1. class Person
  2. {
  3. private String name;
  4. private int age;
  5. Person(String name)
  6. {
  7. //成员变量和局部变量重名,可以用关键字this区分
  8. this.name = name;
  9. }
  10. public void speak()
  11. {
  12. //输出时,会默认为成员增加this关键字,用来代表具体对象的数据
  13. System.out.println(this.name+':'+this.age);
  14. }
  15. }

2、this关键字也可以用于在构造函数中调用其他构造函数。但是,只能定义在构造函数的第一行,因为初始化动作要先执行。如:

  1. class Person
  2. {
  3. private String name;
  4. private int age;
  5. Person()
  6. {
  7. name = 'baby';
  8. age = 1;
  9. System.out.println('Person run');
  10. }
  11. Person(String name)
  12. {
  13. //成员变量和局部变量重名,可以用关键字this区分
  14. this.name = name;
  15. }
  16. Person(String name,int age)
  17. {
  18. //调用其他构造函数时,只能定义在构造函数的第一行,因为初始化动作要先执行
  19. this();
  20. this.name = name;
  21. this.age = age;
  22. }
  23. public void speak()
  24. {
  25. System.out.println(this.name+':'+this.age);
  26. }
  27. }
  28. class ThisDemo
  29. {
  30. public static void main(String[] args)
  31. {
  32. Person p = new Person('小强',10);
  33. p.speak();
  34. }
  35. }

运行结果

我们可以看到,虽然我们在 Person(String name,int age) 构造函数中调用了 Person() 构造函数,但是最后的输出结果,仅输出了 Person run ,成员变量的内容还是我们在新建对象时,传递进去的参数,并不是 Person() 中初始化的内容。

可能有人会说,我们将调用的构造函数放在后面执行,不就行了,那么我们就来看看,如果将调用的构造函数放在后面,会出现什么结果:

我们可以看到,编译时就会提示错误,因为其他初始化要先执行,否则会破坏函数中的其他语句,如上面的例子,可能会覆盖我们需要传进去的参数,而且我们定义的函数是封装起来的。这也是Java中的语法规则。 

(0)

相关推荐

  • 诚之和:什么是js构造函数模式

    本篇内容介绍了"什么是js构造函数模式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所 ...

  • 18 this关键字

    18 this关键字 本质 谁调用,代表谁 常用操作 1.调用本类的属性 ​ this.属性名 //例如类中的Set方法 public void setAge(int age){ this.age=a ...

  • 利用构造函数创建对象

    我们为什么要使用构造函数? 1:普通的字面量方式和new Object创建的对象方式一次只能创建一个对象,而里面的 属性和方法大多是重复使用的.当我们想创建多个相同属性和方法的对象并重复使用,就需要使 ...

  • Java基础教程:Java的对象和类

    Java是一种面向对象的编程语言,那什么是对象,什么是类,又怎么使用呢? 什么是对象 客观存在的事物皆为对象,所以我们也常常说万物皆对象.换作Java语言,对象是一种类的实例.相当于现实生活中加一个量 ...

  • 一些JavaSE学习过程中的思路整理(一)(主观性强,持续更新中...)

    目录 一些JavaSE学习过程中的思路整理(一)(主观性强,持续更新中...) Java书写规范 IDEA的一些常用快捷键 Java类中作为成员变量的类 Java源文件中只能有一个public类 Ja ...

  • JavaScript 基础二

    函数 函数:函数就是封装了一段可以重复执行的代码块. function fn(){ console.log('我是函数') } fn(); function getSum(a,b){ return a ...

  • Java中this关键字的使用

    一,表示类中属性 1,没有使用this的情况   class Person{ // 定义Person类 private String name ; // 姓名 private int age ; // ...

  • final关键字在PHP中的使用

    final关键字的使用非常简单,在PHP中的最主要作用是定义不可重写的方法.什么叫不可重写的方法呢?就是子类继承后也不能重新再定义这个同名的方法. class A { final function t ...

  • Excel批量删除指定关键字Sheet名称的工作表,助力办公效率提升

    Excel情报局 Excel职场联盟 生产搬运分享Excel基础技能 Excel爱好者大本营 用1%的Excel基础搞定99%的职场问题 做一个超级实用的Excel公众号 Excel是门手艺玩转需要勇 ...

  • Java 中的关键字

    Java 中有多少个关键字,有大小写之分吗? Java 中有 48 个关键字在使用 + 两个保留关键字未使用,共 50 个关键字. Java 关键字全部都由是小写组成. Java 中保留关键字分别是哪 ...

  • Static关键字

    Static关键字 Static修饰的属性称为类变量,修饰的方法称为静态方法,类变量和静态方法可直接使用类名点变量名/方法名调用, 但实例变量(没有static修饰的属性)和非静态方法就必须通过new ...

  • C语言丨关键字union的定义和使用

    union,中文名"联合体.共用体",在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量. 但在&quo ...

  • Excel表格《像百度一样的搜索框》通过关键字来查找相应数据

    Excel表格《像百度一样的搜索框》通过关键字来查找相应数据

  • Python学习之常用关键字!

    你知道Python常用关键字有哪些吗?有哪些关键字是你不太了解的呢?今天小编通过这篇文章为大家介绍一下. 1.内置常量:False.none.True; >>> False == 0 ...

  • Android 字符串批量匹配关键字并高亮处理

    有一个需求,敏感词检测,App端将文本框输入的字符长串提交到后端,后端返回敏感词数组,前端输入框对敏感词关键字高亮处理. 第一步:从 字符串找出包含某关键字的所有地方.利用到的类:Pattern,Ma ...

  • 高考答题提分技巧丨化学审题审出关键字审出突破口

    高考进入倒计时,第三次模拟考试已经结束,为了最大限度助力考生提升高考成绩,本报联合哈师大附中优秀名师团队,在最后关键时刻,给出考生高考答题提分技巧.以下是化学学科. 指导名师:哈师大附中高三学年主任王 ...

  • final关键字

    根据上下文环境,Java 的关键字 final 的含义有些微的不同,但通常它指的是"这是不能被改变的".防止改变有两个原因:设计或效率.因为这两个原因相差很远,所以有可能误用关键字 ...