java中this这个概念初学者非常难理解,请举例说明

Posted mark-to-win

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中this这个概念初学者非常难理解,请举例说明相关的知识,希望对你有一定的参考价值。

4.this关键字(this key word) (视频下载) (全部书籍)


继上一小节,(3.一个对象可能有多个参考)this是当中的一个参考!指向他自己。

 

本章源码

class MyTestDate {
    int year;
    int month;

    MyTestDate(int year, int month, int day) {
/*为了学习this的用法,本例中,我们故意用了两个相同的year,一个是全类作用范围的(整个类中都有效马克-to-win):int year; 另外一个是,只有本块儿才起作用的块作用范围的MyTestDate(int year, 这两个year不是一个year,如果把this.year = year; 变成 year = year,这两个year都成了块作用范围的那个year, 这样全类作用范围的那个year等于没赋值,还是0,输出结果就会变成0/0/0, if here you use year = year;month = month; result is 0/0/0, because this.year still is 0.local variable ‘s scope is less than the "this" variable‘s scope.
*/
        this.year = year;//this.year指前面类范围的变量 int year。
        this.month = month;
    }

    void setYear(int year) {
        this.year = year;

    }

    void setMonth(int month) {
        this.month = month;

    }


/*系统见到System.out.println,会自动调用toString,初学者没必要深究*/
    public String toString() {
        return "" + year + "/" + month ;
    }
}

public class Test {
    public static void main(String[] args) {
        MyTestDate date = new MyTestDate(2009, 7, 18);
        System.out.println(date);
        date.setYear(2009);
        date.setMonth(5);
        System.out.println(date);

        MyTestDate date1 = new MyTestDate(2009, 1, 1);
        System.out.println(date1);
        date1.setYear(2006);
        date1.setMonth(6);
        System.out.println(date1);

    }
}

result is:

2009/7
2009/5
2009/1
2006/6

 

【新手可忽略不影响继续学习】(视频下载) (全部书籍) 下面例子中setYear中的return this;返回了一个指向对象的指针,this.setMonth(8).setDay(20);是合法的,如果像原来的例子一样什么都不返回,就成了void.setMonth(8).setDay(20); 马克-to-win,系统就该报错了

 

class MyTestDate {
    int year;
    int month;

    MyTestDate(int year, int month, int day) {
        this.year = year;
        this.month = month;
    }

    MyTestDate setYear(int year) {
        this.year = year;
        return this;
    }

    public MyTestDate setMonth(int month) {
        this.month = month;
        return this;
    }


    public String toString() {
        return "" + year + "/" + month  ;
    }
}

public class Test {
    public static void main(String[] args) {
        MyTestDate date = new MyTestDate(2009, 7, 18);
        System.out.println(date);
        date.setYear(2009).setMonth(8);
        System.out.println(date);

        MyTestDate date1 = new MyTestDate(2009, 1, 1);
   。。。。。。。。。。。。。。。

详情请见:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner2_web.html#This

以上是关于java中this这个概念初学者非常难理解,请举例说明的主要内容,如果未能解决你的问题,请参考以下文章

Java泛型

Java语言this关键字用法全面总结

初学者最难理解的数据结构和算法概念有哪些?你会如何解释它们?

初学者最难理解的数据结构和算法概念有哪些?你会如何解释它们?

深入解释yield和Generators

一VueJs 填坑日记之基础概念知识解释