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

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

admin3个月前 (04-24)数码18

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深拷贝浅拷贝区别)” 的相关文章

选择性-过多的关键词会增加SEO工作的复杂性-关键词不应过多 (选择性太多)

选择性-过多的关键词会增加SEO工作的复杂性-关键词不应过多 (选择性太多)

引言 在不断演进的软件开发领域,保持最新技术至关重要。从 Java 11 迁移到 Java 21 是一个明智的决定,它带来了显着的优势和创新,可以提升应用程序的安全性、性能和开发效率。...

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

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

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

在-Java-年依然盛行的-2023-25-个要素 (在javascript中)

在-Java-年依然盛行的-2023-25-个要素 (在javascript中)

译者|刘汪洋 审校|重楼 学习的环节中,我看法到在90年代末OOP正值鼎盛期间,Java作为能够真正成功这些概念的言语显得尤为突出(虽然我此前学过C++,但相比Java影响较小)。我特...

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

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

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

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

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

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

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

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

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

Java-以及如何成功它-为何它本应更繁难-异步编程 (java一个子类可以有多个父类吗)

Java-以及如何成功它-为何它本应更繁难-异步编程 (java一个子类可以有多个父类吗)

在过去的好多年里,多线程和异步不时作为技术里的初级局部,在技术序列中,一个言语分为入门局部、进阶局部和初级局部,所以,异步是作为其中的初级技术局部存在的。 关于异步和多线程这局部吧,经常存在...

Java-三分钟速成-揭秘多线程编程新范式-虚拟线程 (java三目表达式)

Java-三分钟速成-揭秘多线程编程新范式-虚拟线程 (java三目表达式)

背景 虚拟线程是 Java 语言中的一种轻量级线程,可以减少编写、维护和调试高吞吐量并发应用程序的工作量。虚拟线程的详细背景介绍可以在 JEP 444 中找到。 平台线程...