解析java中This的用法分析

沂水县委员长

沂水县委员长

2016-02-19 09:34

今天图老师小编给大家展示的是解析java中This的用法分析,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!
用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法,那们类里面是够也应该有一个引用来访问自己的属性和方法纳?呵呵,JAVA提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法。先来个简单的例子:
代码如下:

public class ThisDemo { 
    String name="Mick";
    public void print(String name){
        System.out.println("类中的属性 name="+this.name);
        System.out.println("局部传参的属性="+name);
    }  
    public static void main(String[] args) {
        ThisDemo tt=new ThisDemo();
        tt.print("Orson");
    }
}

关于返回类自身的引用,Thing in Java有个很经典的例子,通过this 这个关键字返回自身这个对象然后在一条语句里面实现多次的操作,还是贴出来。
代码如下:

public class ThisDemo { 
    int number;
    ThisDemo increment(){
         number++;
         return this;
    } 
  private void print(){
         System.out.println("number="+number);
    }
    public static void main(String[] args) {
        ThisDemo tt=new ThisDemo();
         tt.increment().increment().increment().print();
    }
}

那也应该在一个类中定义两个构造函数,在一个构造函数中通过 this 这个引用来调用另一个构造函数,这样应该可以实现,这样的实现机制在实际做应用开发的时候有会有什么样子的用处纳?贴下写的代码:
代码如下:

public class ThisDemo { 
    String name;
    int age;
    public ThisDemo (){
        this.age=21;
   }    
    public ThisDemo(String name,int age){
        this();
        this.name="Mick";
    }    
  private void print(){
         System.out.println("最终名字="+this.name);
         System.out.println("最终的年龄="+this.age);
    }
    public static void main(String[] args) {
       ThisDemo tt=new ThisDemo("",0); //随便传进去的参数
       tt.print();
    }
}

看上面这段代码虽然很短,理解起来似乎也很顺理成章,在有参数的构造函数中赋值name 在无参数的当中赋值age属性。但我个人觉得其中有点问题,实例化一个类应该先为对象ThisDemo分配内存,先调用构造函数ThisDemo(String name,int age),执行到第一行的时候,调用ThisDemo()构造函数,也就是说这里应该会有两个内存空间的,一个是ThisDemo(String name,int age)执行到一点的空间和另一个是ThisDemo()执行空间,为什么最后打印出来的结果是都实例化了一个对象中的两个属性name和age纳?请大牛赐教!
总结一下:
1) this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性;
2)可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数(这里面上面有个问题)
展开更多 50%)
分享

猜你喜欢

解析java中This的用法分析

编程语言 网络编程
解析java中This的用法分析

解析java中super的用法分析

编程语言 网络编程
解析java中super的用法分析

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java中CyclicBarrier的用法分析

编程语言 网络编程
Java中CyclicBarrier的用法分析

Java for循环的几种用法分析

编程语言 网络编程
Java for循环的几种用法分析

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

浅析Java中Split函数的用法技巧

编程语言 网络编程
浅析Java中Split函数的用法技巧

Java中对HashMap的深度分析

Java JAVA基础
Java中对HashMap的深度分析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java反转字符串和相关字符编码的问题解决

Java反转字符串和相关字符编码的问题解决

用javascript实现分割提取页面所需内容

用javascript实现分割提取页面所需内容
下拉加载更多内容 ↓