Java基础却常被忽略:全面讲解this的实战技巧!

简介: 本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容:1.什么是this2.this的场景化使用案例3.关于this的误区4.总结与练习

什么是this

this的概念

this是 JAVA中的一个关键字,它代表当前对象的引用。当我们在类中调用this时指向当前类的实例,它的主要作用包括区分类的成员变量和局部变量,在构造方法中调用其他构造方法,返回当前对象链式调用,作为参数传递。

 

this的场景化使用案例 

区分成员变量和局部变量

在编辑完相关代码以后,可以发现在调用setName & quote、小米"e、getName后返回的还是null name=name,这是由于这行代码中的两个name指的是同一个局部变量,而要赋值给类的成员变量必须用this来指明正确代码。这也就是this的最基础的用法——区分同名变量。

 

在构造方法中调用其他构造方法(如Person类)

假设要写一个有多个构造方法,可能会面临一个问题:如何避免构造方法中代码重复,this用来调用另一个构造方法就是最佳答案。this name的代码中,零调用了第二个构造方法,既减少了重复代码,又方便统一管理逻辑,注意this构造方法中调用其他构造方法时,this必须是方法的第一行,不允许循环调用构造方法,否则会编译错误。

 

支持链式调用

在面试中,很多人会提到链式调用。要实现相关代码的运行,就要实现链式调用,其关键在于方法返回this。代码如下。通过返回this,我们可以在一个语句中完成多个调用,大大提升代码的可读性和优雅度。

 

作为参数传递

当我们要把当前对象传递给另一个方法或对象时,this就派上了用场。如有一个printer类,即负责打印对象的信息,我们可以这样实现。person调用print this时,printer会将当前对象传递给print方法,从而实现打印。

 

关于this的误区 

静态方法中是否可以使用this?

不可以。因为静态方法是属于类的,而this是属于实例的。this不存在在静态方法中。

 

this可以出现在匿名内部类中吗?

可以,但是要注意this的含义。this指的是匿名类实例,在匿名类内部类中,而不是外部类实例。如果需要引用外部类,可以用外部类名this的方式。

 

总结与练习

 

通过本次学习,我们知道了this的四种常见用法,即区分成员变量和局部变量、在构造方法中调用其他构造方法、实现链式调用,以及作为参数传递。同时,也要主要静态方法中不能使用,this要指向匿名内部类中。


在课后也可以进行相关的实践,如student类包含实现name和 score两个属性,支持以下操作:使用构造方法初始化对象name,并通过链式调用设置store打印对象信息。

相关文章
|
20天前
|
安全 Java 程序员
《从头开始学java,一天一个知识点》之:控制流程:if-else条件语句实战
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《for与while循环的使用场景》。 ---
54 19
|
15天前
|
消息中间件 Java 应用服务中间件
JVM实战—1.Java代码的运行原理
本文介绍了Java代码的运行机制、JVM类加载机制、JVM内存区域及其作用、垃圾回收机制,并汇总了一些常见问题。
JVM实战—1.Java代码的运行原理
|
7天前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
27 2
|
22天前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
5月前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
137 2
|
21天前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
2月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
53 9
|
3月前
|
Java 程序员
Java基础却常被忽略:全面讲解this的实战技巧!
小米,29岁程序员,分享Java中`this`关键字的用法。`this`代表当前对象引用,用于区分成员变量与局部变量、构造方法间调用、支持链式调用及作为参数传递。文章还探讨了`this`在静态方法和匿名内部类中的使用误区,并提供了练习题。
62 1
|
4月前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
122 8
|
4月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####