Java中关键字this的妙用:调用方法、属性与构造器

devtools/2024/9/22 22:48:51/

Java中关键字this的妙用:调用方法、属性与构造器

在Java编程中,this是一个非常重要的关键字,它指代当前对象。通过this,我们可以方便地引用当前对象的属性和方法,或者在构造器中调用另一个构造器。对于初学者来说,掌握this的用法,可以使代码更加清晰、简洁,并且避免一些常见的错误。

一、使用this调用方法

当我们在一个方法中需要调用当前类的另一个方法时,可以使用this关键字。虽然很多时候我们可以直接调用方法名,但在某些情况下,使用this可以使代码意图更加明确。

java">public class Person {private String name;private int age;public Person(String name, int age) {this.name = name; // 使用this引用当前对象的name属性this.age = age;   // 使用this引用当前对象的age属性}public void introduce() {System.out.println("My name is " + this.getName()); // 使用this调用getName方法System.out.println("And I'm " + this.getAge() + " years old."); // 使用this调用getAge方法}public String getName() {return name;}public int getAge() {return age;}public static void main(String[] args) {Person person = new Person("Alice", 25);person.introduce(); // 输出:My name is Alice And I'm 25 years old.}
}

在上面的代码中,this.namethis.age分别用于引用当前对象的nameage属性。在introduce方法中,我们使用this.getName()this.getAge()来调用当前对象的getNamegetAge方法。

二、使用this调用属性

在构造器或方法中,如果方法的参数名与类的属性名相同,为了避免混淆,我们通常使用this来引用类的属性。

java">public class Car {private String color;private int speed;public Car(String color) {this.color = color; // 使用this引用当前对象的color属性}public void setSpeed(int speed) {this.speed = speed; // 使用this引用当前对象的speed属性}public String getColor() {return color;}public int getSpeed() {return speed;}public static void main(String[] args) {Car myCar = new Car("Red");myCar.setSpeed(100);System.out.println("My car is " + myCar.getColor() + " and it's going " + myCar.getSpeed() + " km/h.");}
}

Car类的构造器中,我们使用this.color来引用当前对象的color属性,以区分构造器参数color。同样,在setSpeed方法中,我们使用this.speed来引用当前对象的speed属性。

三、使用this调用构造器

在Java中,一个类的构造器可以调用另一个构造器,这通常用于减少代码重复。使用this()可以在一个构造器中调用另一个构造器。

java">public class Rectangle {private int width;private int height;// 带两个参数的构造器public Rectangle(int width, int height) {this.width = width;this.height = height;}// 带一个参数的构造器,通过调用两个参数的构造器初始化public Rectangle(int side) {this(side, side); // 使用this调用带两个参数的构造器}public int getWidth() {return width;}public int getHeight() {return height;}public static void main(String[] args) {Rectangle square = new Rectangle(5); // 使用带一个参数的构造器创建正方形对象System.out.println("Width: " + square.getWidth() + ", Height: " + square.getHeight()); // 输出:Width: 5, Height: 5}
}

在上面的代码中,Rectangle类有一个带两个参数的构造器和一个带一个参数的构造器。带一个参数的构造器通过this(side, side)调用了带两个参数的构造器


http://www.ppmy.cn/devtools/7542.html

相关文章

Biome 1.7 发布,支持从 ESLint 和 Prettier 迁移

近日,Biome v1.7 正式发布!这个新版本提供了从 ESLint 和 Prettier 迁移的简单路径。它还引入了格式化程序和 linter 的实验性机器可读报告、新的 linter 规则和许多修复。 使用以下命令更新 Biome: npm install --save-dev --save-exact b…

K8s ingress-controller中nginx文件上传大小的限制

# 20、K8s ingress-controller中nginx文件上传大小的限制 问题:1.应用程序中上传文件文件出错,页面提示“您上传的文件太大了,请压缩图片后重试。” 2.通过F12 可以看到,后台提示 403错误,可以看到出错是由于nginx的限…

如何使用JSONB类型在PostgreSQL中存储和查询复杂的数据结构?

文章目录 解决方案1. 创建包含JSONB列的表2. 插入JSONB数据3. 查询JSONB数据4. 创建索引以优化查询性能 示例代码结论 在PostgreSQL中,JSONB是一种二进制格式的JSON数据类型,它允许你在数据库中存储和查询复杂的JSON数据结构。与普通的JSON类型相比&…

PDF被加密无法打印的解决办法

思路很清晰:先解密→再打印 分享四个工具,可以轻松解密PDF: ⭐i love pdf I LOVE PDF是一款免费的PDF网站,界面设计简洁,首页没有广告,但每个功能的操作界面是有广告的,不会影响使用。 部分功…

excel文件预览: luckyexcel+luckysheet

luckyexcel 使用 npm i luckyexcel --saveluckysheet 使用 luckysheet文档 克隆Luckysheet源码到本地 git clone https://github.com/dream-num/Luckysheet.git安装依赖 npm install npm install gulp -g 开发 npm run dev打包 npm run build本地引入 npm run build 后 …

CSS基础:position定位的5个类型详解!

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…

创新指南|节日期间提高销量的 10 个最佳技巧

许多网上购物者在感恩节前开始假日购物。假期是在线企业销售产品和增加销售额的最佳时机。根据万事达卡的数据,去年在线假日销售额增长了 10.6%,而店内销售额增长了 6.8%。此外,2023年美国消费者平均计划在假日旺季花费约1,530美元。在线企业…

阅读笔记15:The functional landscape of the human phosphoproteome

题目:The functional landscape of the human phosphoproteome 作者:David Ochoa, Andrew F. Jarnuczak, Cristina Viitez, Maja Gehre, Margaret Soucheray, Andr Mateus, Askar A. Kleefeldt, Anthony Hill, Luz Garcia-Alonso, Frank Stein, Nevan J. Krogan, Mikhail M. …