【后端开辟】java中this是什么意义?

this用在类内部,示意类实例本身。

this关键字是类内部当中对本身的一个援用,能够轻易类中要领接见本身的属性。

java中this用法

1、当局部变量和成员变量重名的时刻,在要领中运用this示意成员变量以示辨别。

class Demo{
    String str = "这是成员变量";
    void fun(String str){
        System.out.println(str);
        System.out.println(this.str);
        this.str = str;
        System.out.println(this.str);
    }
}
public class This{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.fun("这是局部变量");
    }
}

剖析:上面的类Demo中有一个成员变量str和一个局部变量str(类要领中的形式参数),很显然局部变量和成员变量重名,这个时刻平常在要领中直接运用str实际上是运用局部变量str,对成员变量str没有任何影响,此时如果须要对成员变量做点什么,就必需运用this关键字。

有个题目,如果要领中没有str,那末在要领中运用成员变量str会是什么情况呢?实际上是要领内的一切操纵都是针对成员变量str的。java编程头脑的84页中部有如许一句话:如果在要领内部挪用同一个类的另一个要领,就没必要运用this。一样,在一个要领中如果没有局部变量和成员变量同名,那末在这个要领中运用成员变量也没必要运用this,能够运转下面的代码看看。

class Demo{
    String str = "这是成员变量";
    void fun(String str1){
        System.out.println(str1);
        System.out.println(str);
    }
}
public class This{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.fun("这是局部变量");
    }
}

2、this关键字把当前对象传递给其他要领

这里有个很典范的例子,就是java编程头脑的85页的例子。我们拿出来细致研讨。

class Person{
    public void eat(Apple apple){
        Apple peeled = apple.getPeeled();
        System.out.println("Yummy");
    }
}
class Peeler{
    static Apple peel(Apple apple){
        //....remove peel
        return apple;
    }
}
class Apple{
    Apple getPeeled(){
        return Peeler.peel(this);
    }
}
public class This{
    public static void main(String args[]){
        new Person().eat(new Apple());
    }
}

这是我本身的熟悉,或许不准确,看看书中是如何说的:Apple须要挪用Peeler.peel()要领,他是一个外部的东西要领,将实行由于某种原因而必需放在Apple外部的操纵(或许是由于该外部要领要应用于很多差别的类,而你却不想反复这些代码)。为了将其本身传递给外部要领,必需运用this关键字。

剖析:想象一个场景,如果种种生果去皮的事情都是一样的,只需给我生果,我都按一样的要领去皮。那末连系上面的例子,传进来一个生果,我们吃之前getPeeled(),必需将此生果作为参数传递给外部的peel(),用this来代表本身传递给外部要领。

3、当须要返回当前对象的援用时,就常常在要领写return this;

这类做法的优点是:当你运用一个对象挪用该要领,该要领返回的是经由修改后的对象,且又能运用该对象做其他的操纵。因而很轻易对一个对象举行屡次操纵。

public class This{
    int i = 0;
    This increment(){
        i += 2;
        return this;
    }
    void print(){
        System.out.println("i = " + i);
    }
    public static void main(String args[]){
        This x = new This();
        x.increment().increment().print();
    }
}

效果为:

4

4、在组织器中挪用组织器须要运用this

一个类有很多组织函数,有时刻想在一个组织函数中挪用其他组织函数,以防止代码反复,能够运用this关键字。在java编程头脑中有如许一段话:一般写this的时刻,都是指“这个对象”或许“当前对象”,而且它本身示意对当前对象的援用。在组织器中,如果为this添加了参数列表,那末就有差别的寄义。这将发生对相符此参数列表的某个组织器的邃晓挪用;如许挪用其他组织函数就有了直接的门路。

细致剖析:

从主函数最先,new Flower()会在内存分派空间,初始化对象,初始化对象是挪用组织函数,这里没有写任何参数,当然是挪用默许组织函数,就是谁人无参的构函数。

这个无参的组织函数的第一行代码就是this("hi",122);这里的意义是该无参组织函数又去挪用带两个参数的组织函数,来到带两个参数的组织函数,第一行代码是this(s);这行代码自动婚配带一个参数的组织函数,发明Flower(String ss)这个比较婚配,都是String范例的参数。

然后挪用了带有一个String范例参数的组织函数,打印:只要String范例的参数的组织函数 s = hi;然后回到上一级挪用函数,就是带有两个参数的组织函数,打印输出:有String和int范例的参数的组织函数;再回到上一级,就是无参组织函数,打印:默许组织函数

此时组织函数已初始化完成新建的对象,末了在主函数的末了一行代码中打印:petalCount=122 s=hi

画个图看得更邃晓。

有几点要注重:

1,this只能够挪用一个组织器,在一个组织器中不能同时挪用两个组织器;

2,必需将你所挪用的组织器放在最最先的位置,这也诠释了为何不能在一个组织函数中挪用两个组织器,那第二个必将不在最最先位置。

3,本例中在带有两个参数的组织函数中能够用this挪用其他恣意一个只要一个参数的组织函数,这取决你本身,随意调哪个都能够。

4,在组织函数以外的要领内不能运用this挪用组织函数。代码内里解释的都不能准确编译。

this总结

1、示意对当前对象的援用!

2、示意用类的成员变量,而非函数参数。

3、用于在组织要领中援用满足指定参数范例的组织器(实在也就是组织要领)。然则这里必需异常注重:只能援用一个组织要领且必需位于最先!

4、很明显this不能用在static要领中,由于this指代当前对象,而static则无对象之说。

ki4网,大批的免费Java入门教程,迎接在线进修!

以上就是java中this是什么意义?的细致内容,更多请关注ki4网别的相干文章!

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注