当前位置: 首页 > web >正文

Java之this关键字

  • 什么是this?

java 虚拟机会给每个对象分配this,代表当前对象。

class Dog
{String name;int age;public Dog(){}public Dog(String name,int age){this.name = name; //this.表示当前属性的namethis.age = age;  // this.表示当前属性的age}
}
​
public class test8
{public static void main(String[] args){Dog dog1 = new Dog("脑袋大",3);
​System.out.println("dog1的结果:" + dog1.name + "," + dog1.age);}
}
  • 为什么说this就代表new出的对象呢?

因为在创建对象的时候,其实this就已经有了只不过this是隐藏起来的。在Java中我们是不能输出对象的内部地址的,但是我们可以用hashcode()函数去当作一个对象的地址,hashcode()返回的是一个整数。

 

  • this需要注意的细节:

    • this关键字可以用来访问本类的属性、方法、构造器

    • this用于区分当前类的属性和局部变量

      • 代码片段:

      • class Dog
        {String name = "脑袋大";int age = 3;public Dog(){}public Dog(String name,int age){this.name = name;this.age = age;}
        ​public void f1(){String name = "小米";int age = 2;System.out.println("我是方法f1()..................");System.out.println("不加this关键字的name和age:" + name + "," + age);System.out.println("加this关键字的this.name和this.age:" + this.name + "," + this.age);}
        ​public void f2(){System.out.println("我是方法f2()..................");}
        ​
        }

        输出:

        我是方法f1()..................

        不加this关键字的name和age:小米,2

        加this关键字的this.name和this.age:脑袋大,3

  • 访问成员方法的语法: this.方法名(参数列表)
    • 代码片段:

      class Dog
      {String name = "脑袋大";int age = 3;public Dog(){}public Dog(String name,int age){this.name = name;this.age = age;}
      ​public void f1(){String name = "小米";int age = 2;System.out.println("我是方法f1()..................");// System.out.println("不加this关键字的name和age:" + name + "," + age);// System.out.println("加this关键字的this.name和this.age:" //  + this.name + "," + this.age);}
      ​public void f2(){// 两个方法// 第一种f1();System.out.println("我是方法f2()..................");// 第二种this.f1();}
      ​
      }
      输出:
      我是方法f1()..................
      我是方法f2()..................
      我是方法f1()..................
    • 访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另一个构造器,且必须放在构造器方法体的第一句话)

      • 代码片段:

        class Dog
        {String name = "脑袋大";int age = 3;public Dog(){// 必须要写在语句的第一句话this("小狗",1);System.out.println("我是无参构造器..................");}public Dog(String name,int age){this.name = name;this.age = age;System.out.println("我是有参构造器:" + this.name + "," + this.age);}
        }
        输出:
        我是有参构造器:小狗,1
        我是无参构造器..................
    • this不能再类定义的外部使用,只能在类定义的方法中使用。

this小结:简单的说,哪个对象调用,this就代表哪个对象。

http://www.xdnf.cn/news/296.html

相关文章:

  • CTF--MD5
  • 慢速率拉伸热变形工艺试验机
  • 关于模拟噪声分析的11个误区
  • Dify快速入门之基于知识库构建聊天机器人
  • 汽车免拆诊断案例 | 2019款大众途观L车鼓风机偶尔不工作
  • 在浏览器中输入 URL 到页面加载完成都做了什么
  • 【含文档+PPT+源码】基于python爬虫的豆瓣电影、音乐、图书数据分析系统
  • nginx-基础知识(二)
  • 为什么计算「网络响应时间」或「定位响应时间」时,CACurrentMediaTime() 比 Date() 更优?
  • MCP系列之架构篇:深入理解MCP的设计架构
  • DeepSeek 操作 MySQL 数据库:使用 MCP 实现数据库查询
  • 【HDFS入门】联邦机制(Federation)与扩展性:HDFS NameNode水平扩展深度解析
  • 【AI提示词】儿童看护员
  • 实验五 内存管理实验
  • 如何在PDF.js中改造viewer.html以实现PDF的动态加载
  • STM32单片机入门学习——第41节: [12-1] Unix时间戳
  • MyBatis如何配置数据库连接并实现交互?
  • YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(7):(1)ながら 一边。。一边 (2)。。。し。。。し。。 又……又……
  • Vue3后代传祖先组件通讯方法
  • BGP基础实验
  • DeepSeek-R3、GPT-4o 与 Claude-3.5-Sonnet 全面对比:性能、应用场景与技术解析
  • 【信息系统项目管理师】高分论文:论信息系统项目的沟通管理(网管改造工程)
  • C++数据收发管道:构建高效的数据传输通道
  • 【android bluetooth 案例分析 03】【PTS 测试 1】【pts基本介绍】
  • 空调制冷量和功率有什么关系?
  • 算法题(127):最大子段和
  • QT项目----电子相册(2)
  • 极验4 语序验证码 分析 极验4 w
  • WiFi“管家”------hostapd的工作流程