当前位置:首页 > 数码 > Java-深化解析-经过示例了解其作用-中的-关键字-this (java深拷贝浅拷贝区别)

Java-深化解析-经过示例了解其作用-中的-关键字-this (java深拷贝浅拷贝区别)

admin7个月前 (04-24)数码34

this关键字在中是一个十分不凡的关键字,它示意以后对象的援用。this关键字可以用来访问以后对象的成员变量、成员方法和结构方法。

上方是一个繁难的例子,展示了this关键字的用法:

publicclassPerson{privateStringname;privateintage;publicPerson(Stringname,intage){this.name=name;//经常使用this关键字援用成员变量namethis.age=age;//经常使用this关键字援用成员变量age}publicvoidsayHello(){System.out.println("Hello,mynameis"+this.name+",andIam"+this.age+"yearsold.");//经常使用this关键字援用成员变量name和age}}

在上方的例子中,this关键字用来援用以后对象的成员变量name和age。在结构方法中,this关键字用来辨别红员变量和参数,由于它们的称号相反。在sayHello方法中,this关键字可以省略,然而加上它可以愈加明晰地标明咱们在访问以后对象的成员变量。

留意事项:

上方是一个经常使用this()调用另一个结构方法的例子:

publicclassPerson{privateStringname;privateintage;privateStringaddress;publicPerson(Stringname,intage){this.name=name;this.age=age;}publicPerson(Stringname,intage,Stringaddress){this(name,age);//调用另一个结构方法,初始化name和age成员变量this.address=address;//初始化address成员变量}publicvoidsayHello(){System.out.println("Hello,mynameis"+this.name+",andIam"+this.age+"yearsold.");if(this.address!=null){System.out.println("Myaddressis"+this.address);}}}

在上方的例子中,第二个结构方法调用了第一个结构方法,经过this()来初始化name和age成员变量。而后它再初始化address成员变量。这样做可以防止重复的代码,使代码愈加明晰易懂。在sayHello方法中,咱们经常使用this关键字来访问成员变量,以辨别它们和部分变量的称号。除了上述的留意事项,还有一些关于this关键字的细节须要了解。

publicclassCalculator{privateintresult;publicCalculatoradd(intnumber){this.result+=number;returnthis;}publicCalculatorsubtract(intnumber){this.result-=number;returnthis;}publicintgetResult(){returnthis.result;}}//链式调用示例Calculatorcalculator=newCalculator();calculator.add(5).subtract(3);intresult=calculator.getResult();//result的值为2

在上方的例子中,add和subtract方法都前往this关键字,从而成功链式调用。这种编程格调在一些框架和库中十分经常出现,比如jQuery和Java的Builder形式。

中的publicclassOuterClass{privateintvalue;publicclassInnerClass{privateintvalue;publicvoidsetValue(intvalue){this.value=value;//援用外部类自身的实例变量OuterClass.this.value=value;//援用外部类的实例变量}}}

在上方的例子中,this.value援用的是外部类自身的实例变量,而OuterClass.this.value援用的是外部类的实例变量。

publicclassMyClass{privateStringname;publicMyClass(Stringname){this.name=name;}publicvoidprintName(){System.out.println(this.name);}publicConsumer<MyClass>getPrintNameMethodReference(){returnthis::printName;//援用以后实例的printName方法}}

在上方的例子中,this::printName语法用来援用以后实例的printName方法。这种方法援用可以在其余方法中作为参数传递,或许在Lambda表白式中经常使用。例如:

MyClassmyClass=newMyClass("John");Consumer<MyClass>printNameMethodReference=myClass.getPrintNameMethodReference();printNameMethodReference.accept(myClass);//输入"John"

除了上述的内容,还有一些关于this关键字的不凡用法和留意事项。

publicclassPerson{privateStringname;privateintage;privateStringaddress;publicPerson(Stringname,intage){this.name=name;this.age=age;}publicPerson(Stringname,intage,Stringaddress){this(name,age);//调用另一个结构方法,初始化name和age成员变量this.address=address;//初始化address成员变量}}

在上方的例子中,第二个结构方法经过this(name,age)调用了第一个结构方法,从而初始化了name和age成员变量。而后它再初始化address成员变量。

publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){if(instance!=null){thrownewRuntimeException("UsegetInstance()methodtogetthesingleinstanceofthisclass.");}instance=this;}publicstaticSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}

在上方的例子中,Singleton类的结构方法经常使用this关键字来援用以后对象,并将该对象赋值给静态变量instance。而后,静态方法getInstance()前往该静态变量。这样,每次调用getInstance()方法时都会前往同一个对象实例。

this关键字是Java中十分关键的一个关键字,它示意以后对象的援用。经过正当地经常使用this关键字,可以访问以后对象的成员变量、成员方法和结构方法,成功链式调用、结构方法链和单例形式等性能。然而,在经常使用this关键字时须要留意一些细节和限度,比如不能在静态高低文中经常使用、不能赋值给另一个变量等。


简要说明super关键字和this关键字的用法

一、thisJava关键字this只能用于方法方法体内。 当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。 因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final使用总结”一文中给出了明确解释。 并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this.二、supersuper关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。 不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)。 下面是一个综合运用super的例子,有两个类:一个Father类,一个Father类的子类Son,super是Java语言的保留字,用来指向类的超类.假设在Teacher类中定义了一个类变量booleangender;在子类的方法中gender就应该是指子类的gender变量,如果要引用超类的gender变量的话就必须使用对象在类的构造方法中,要给对象的域进行初始化,这时如果参数和类变量同名,则类变量的名字将会被参数名屏蔽,必须知道当前的对象名称,才能用对象名引用对象的域

java this是什么意思?

在Java中,this是一个关键字,用来表示当前对象。 例如,在一个类中定义了一个成员变量name,在构造方法中,如果使用了相同名称的形参name,则无法直接引用成员变量。 这时就可以用来指代成员变量,以区分形参。 同时,this也可以用来作为方法调用的目标,在方法内部调用另一个方法时,可以用this来引用当前对象,以方便访问成员变量和其他方法。 this不仅可以用来引用成员变量和方法,还可以用来传递当前对象的引用。 例如,在某个方法中需要把对象自身作为参数传递给另一个对象的方法时,就可以使用this关键字。 这种方式可以提高对象的灵活性和复用性,使得同一对象可以在不同场景下扮演不同角色。 需要注意的是,this关键字只能在实例方法中使用,而在静态方法和类变量的初始化块中则无法使用。 此外,this关键字也不能用在构造方法的第一行,因为在构造方法中会首先调用父类的构造方法,此时对象尚未完全构造出来,无法使用this引用。 但是,可以在构造方法的其他位置使用this来调用本类的其他构造方法,以便代码复用和性能优化。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Java

“Java-深化解析-经过示例了解其作用-中的-关键字-this (java深拷贝浅拷贝区别)” 的相关文章

Java循环结构与实现方式 (java循环语句案例)

Java循环结构与实现方式 (java循环语句案例)

循环简介 循环是编程中常用的一种控制结构,用于重复执行某一段代码或操作。循环的执行需要满足一定的条件,当条件满足时,循环会一直执行,直到条件不满足时才结束。所以循环其实就是重复地完成某一件事...

Java-Lambda-表白式的多面运行-从基础到初级 (java类的定义和使用)

Java-Lambda-表白式的多面运行-从基础到初级 (java类的定义和使用)

Lambda表白式是8中引入的最有影响力的性能之一。它们经过准许繁复而优雅地创立匿名函数来成功Java中的函数式编程。在这篇博文中,咱们将讨论编写lambda表白式的各种方式。 概述...

助推高性能运行程序开发-革命性的并发编程处置打算-的虚构线程-Java-21 (高性能运作有什么用)

助推高性能运行程序开发-革命性的并发编程处置打算-的虚构线程-Java-21 (高性能运作有什么用)

21最关键的个性之一就是虚构线程(JEP444)。这些轻量级的线程降落了编写、保养和观察高吞吐量并行运行所需的致力。 在探讨新个性之前,让咱们先看一下以后的形态,以便更好地理解它试图处置什么...

用Java实现自动化测试和质量控制-分步指南 (用java实现幸运抽奖)

用Java实现自动化测试和质量控制-分步指南 (用java实现幸运抽奖)

自动化测试概述 自动化测试是指使用软件工具和脚本来执行测试任务,以代替人工操作并提高测试效率。 自动化测试的优势 提高效率 可重复性 提高覆盖率...

Java中不倡导经常使用foreach的六大场景 (java中不等于怎么写)

Java中不倡导经常使用foreach的六大场景 (java中不等于怎么写)

在中,foreach是一个罕用的循环结构,它可以极大地简化遍历数组或汇合(例如List或Set)的代码。它通常被以为是一种愈加繁复和易读的迭代形式。但是,或许有一些状况下不倡导经常使用foreac...

Java-渣滓回收器的运作形式-对不再沉闷对象的跟踪机制

Java-渣滓回收器的运作形式-对不再沉闷对象的跟踪机制

作为一门面向对象的编程言语,具备智能内存治理的个性。这象征着开发人员无需手动调配和监禁内存,而是由Java虚构机的渣滓回收器担任治理。渣滓回收器经过监督程序中不再经常使用的对象来回收内存,以提高内...

掌握Java并发编程-免除竞态条件的困扰 (掌握JavaScript基础)

掌握Java并发编程-免除竞态条件的困扰 (掌握JavaScript基础)

1. 竞态条件的概念和问题 竞态条件指的是多个线程同时访问共享资源,由于执行顺序的不确定性,导致程序结果与预期不符的情况。竞态条件问题通常出现在以下情况下: 多个线程争用同一把锁 多个线程...

Java废品回收器对循环引用对象的处理机制 (java废弃方法)

Java废品回收器对循环引用对象的处理机制 (java废弃方法)

循环引用的定义和问题 循环引用是指两个或多个对象之间形成了相互引用的关系,形成了一个环状结构。例如,对象 A 引用了对象 B,而对象 B 又引用了对象 A,它们之间形成了一个循环引用。在这种情况...