码迷,mamicode.com
首页 > 编程语言 > 详细

Java里this的用法

时间:2015-08-07 00:09:37      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

       this, 一个官方的说法是,this.首先是一个对象,它代表调用这个函数的对象。
       在不会产生混淆的地方 this.是可以省略的,但一般都会加上,例如,下面的程序中,类"Person"里面加与不加 this 编译运行后的结果是一样的:

 1 package testThis;
 2 
 3 public class Test {
 4     public static void main(String args[]){
 5         Person p1 = new Person();
 6         p1.name = "zhangsan";
 7         Person p2 = new Person();
 8         p2.name = "lisi";
 9         
10         p1.talk();
11         p2.talk();
12     }
13 }
14 
15 class Person{
16     String name;
17     void talk(){
18         System.out.println("My name is " + this.name);
19     }
20 }

 上面的代码里第18行,不管是"this.name"还是"name",运行的结果都是

My name is zhangsan
My name is lisi

 

但是,当函数里面有参数时,如果函数的参数和成员变量一样,这时不加this的话,程序就会根据"就近原则",自动调用最近的值,如下面的代码:技术分享   上面已经把对象p1和p2里面的变量name分别赋值为"zhangsan"和"lisi",但类"Person"里面的方法"talk"现在有了参数"String name",而且没有加"this",这时如果运行这个方法,方法就会接收后面参数传送给它的值,分别是"zhang"和"li",这时运行结果就会是:

My name is zhang
My name is li

所以,这里虽然对象p1和p2各有自己的变量 name,但它们调用的方法接收的却是参数里面的值,(从系统里各变量的颜色背景也可心看出对应的变量),而不是它们自己本身的值.所以这里输出的结果跟它们自己内部的值无关.

如果想要在它们各自调用talk()方法时分别输出自己内部的值,则需要在类 "Person"里面的方法"talk"里加上"this",这样,当它们各自调用这个方法时,输出的结果都是它们各自内部变量的值了:

 技术分享

 

Java里this的用法

标签:

原文地址:http://www.cnblogs.com/livterjava/p/4709383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!