java this()函数_Java经典面试题之(如何正确的使用this?)

本文详细解析了Java中this关键字的三种常见用法:指代当前对象、作为参数传递以及在匿名类和内部类中的使用。通过示例代码阐述了this的应用场景,并强调了this不能在静态上下文中使用以及不能改变引用。最后,提供了三个不会导致编译错误的代码选项(a)、(b)和(d)。
摘要由CSDN通过智能技术生成

大家好,又到了我们的知识点分享时刻,书读百遍,其义自现,Java的学习是循序渐进的过程,知识点的理解随着过目的次数逐渐会有不同的境界,每天十分钟小编帮您理解的更深入。今天要和大家分享的是Java的经典面试题关于如何正确的使用this。

38201a66cd162f2d99d711c13f1f302e.png

哪些语句能放在如下代码中所示位置,而不会导致编译错误?

哪些语句能放在如下代码中所示位置,而不会导致编译错误?

178a15e3015d97f5dd9bcfda1ac38579.png

请选出3个正确的答案:

( a ) i=this.plane;

( b )i=this.car;

( c ) this=new ThisUse();

( d ) this.car=plane;

考点:该面试题主要考察求职者对Java语言中this关键词的掌握和使用

出现频率:★★★

cd3a1ed82ea1513f0e85f337991f8eec.png

【面试题解析】Java语言中,this用法可以分为下面3种:

1.this指代当前对象,当在一个类中要明确指出使用该类对象的变量或函数时,就应该加上this引用。

2e2aaeca60b43b5b39053552f6da81ec.png

上面图片代码运行结果:s = helloworld ! 和 1- > this . s= hello 和 2- > this . s= helloworld !

构造函数A中,参数s与类A的变量s同名,这时假如直接对s进行操作,则会对变量s进行修改。若要对类A的变量s进行操作,就应该使用this进行引用。运行结果的第1行就是直接对参数s进行打印结果,后面两行分别是对对象A的变量s进行操作前后的打印结果。

2.把this作为参数传递,当一个类要把自己作为参数传递给别的对象时,也可以用this。示例代码如下:

a20a82efdae1e2c7336d04ff005b55a6.png

运行结果: Hello from a !和 Hello from b !在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。

3.注意匿名类和内部类中的this,有时候,会用到一些匿名类和内部类。当在匿名类或内部类中用this时,这个this则指的的是匿名类或内部类本身。这时假如要使用外部类的方法和变量的话,则应该加上外部类的类名。示例代码如下:

bf631c003e83489a140752bfc72be472.png

在上面这个例子中, thread是一个匿名类对象,它的run()函数里用到了外部类的run()函数。这时由于函数同名,直接调用就不行了。这时有两种方法,第1种方法就是把外部的run函数换一个名字,但这种办法对于一个开发到中途的项目来说是不可取的。第2种方法就可以参考本例用外部类的类名加上this引用,来说明要调用的是外部类的方法run()方法。

注意:this引用不能用于静态上下文中,因为在任何对象的上下文中都不会执行静态代码。

该面试题中,非静态方法有一个隐含的this对象引用,但是该引用是不能被改变的所以(c)是错误的;(d)也是错误的,因为this是表示对象引用,不能指向局部变量。

参考答案:(a)、(b)、(d)。

认为文章不错的同学可以关注我们哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值