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

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

admin8个月前 (04-24)数码36

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-编程中的类继承与接口实现 (深入探讨交流)

简介 类索引、父类索引和接口索引是在 Class 文件中用于确定类的继承关系的重要数据。通过这些索引,Java 虚拟机 (JVM) 可以准确地建立类之间的继承关系,实现多态性和接口的实现。...

大编程趋势-5-年-Java-2024-开发者的 (编程是大趋势吗)

大编程趋势-5-年-Java-2024-开发者的 (编程是大趋势吗)

Java 作为编程领域的支柱,拥有超过 900 万开发人员和超过 30 年的发展历史。它以其先进的安全功能、优越的性能和跨平台开发能力而闻名。展望 2024 年,Java 正准备进行一场突破性的转...

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

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

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

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

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

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

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

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

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

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

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

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

消除反复编译困扰-优化效率-释放Java开发潜能 (消除反复编译命令)

消除反复编译困扰-优化效率-释放Java开发潜能 (消除反复编译命令)

在开发过程中,反复编译是一个常见的问题,特别是在大型项目或者需要频繁修改代码的情况下。每次修改代码后都需要重新编译整个项目,这样耗费了大量的时间和资源,降低了开发效率。为了解决这个问题,我们可以采...

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

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

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