Java-深化解析-经过示例了解其作用-中的-关键字-this (java深拷贝浅拷贝区别)
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来调用本类的其他构造方法,以便代码复用和性能优化。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。