黑马程序员技术交流社区

标题: this关键字怎么用? [打印本页]

作者: 怀瑾    时间: 2015-11-17 18:59
标题: this关键字怎么用?
什么时候用this,解释this的用法?
作者: Phy_zhang    时间: 2015-11-17 19:45
this最基本的用法就是区分局部变量与成员变量同名情况
例如:
class student
{
    int age;
    student(int age)  
    {
         this.age = age ; //注意这里有两个age 前面是student的成员变量,后面是形参
     }
}
this代表本类对象,代表它所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数,this就代表哪个对象
另外,this语句用于构造函数之间进行相互调用
例如:
class Person
{
       String name;
        int age ;
        Person(){}
        Person(String name)
        {
             this.name = name ;
         }
         Person(String name, int age)
         {
               this(name);
               this.age = age;
          }
}
注意: this语句只能定义在构造函数的第一行,因为初始化要先执行
作者: ……_JKQqB    时间: 2015-11-17 21:05
有条就近原则!
作者: 一个人的朝圣    时间: 2015-11-17 21:24
不错 我刚这个问题有点晕乎
作者: 大耳冬    时间: 2015-11-17 21:55
本帖最后由 大耳冬 于 2015-11-17 21:59 编辑

1L正解,补充下,全局变量与局部变量同名的就近原则,
class Test

int i =0;
public  show(){
int i=9;
spo(i);


全局变量和局部变量都有i 那么输出的i到底是多少?就近原则,所以输出的是9;
class student
{
   private  int age;
    public setAge(int age)  
    {
         this.age = age ; //注意这里有两个age 前面是student的成员变量,后面是形参
     }
(1)如果你调用setAge方法对age赋值的话,setAge(22);
(2)这个22 传给方法声明中的参数变量age; 如果方法声明中没有this的话 方法体 就是age=age,声明中的age值传给等号右边age,(3)然后右边age值传给左边就近原则的局部变量name的值。相当于自己给自己赋值。对全局变量并没有影响。
所以这时 出现this 代表this.name是全局变量然后  第三步就代表给全局变量赋值了。
作者: 迷茫不堪的年纪    时间: 2015-11-17 22:49
this  一般用在构造函数里(有参和set get),  用来指的是当前引用对象.
作者: zypt0218    时间: 2015-11-18 00:21
this指当前对象的引用, 就近原则, 记住这个就可以了
作者: 李永佳    时间: 2015-11-18 08:03
本类对象,指代当前对象
作者: xiao15779706    时间: 2015-11-18 08:25
当前对象的引用
this:用于区分局部变量和成员变量重名的情况;用于构造函数间调用的情况

this:代表本类的对象

this代表所在函数所属对象的引用
哪个对象调用this所在的函数,this就代表哪个对象

this的应用:当定义类中的功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
            但凡本类功能内部使用本类对象,用this表示

构造函数之间进行调用时用this(XXX)语句;
this语句只能放在构造函数的第一行;因为初始化动作要先执行。
作者: Rocky_zhang    时间: 2015-11-18 13:55
当前对象(方法)的引用
作者: 草上飞f    时间: 2015-11-18 14:42
哪个对象调用方法,该方法内部的this就代表哪个对象
作者: 小曼_r9qDE    时间: 2015-12-6 23:31
面向对象(this关键字的概述和应用)(掌握) * A:this关键字特点         * 代表当前对象的引用  * B:案例演示         * this的应用场景         * 用来区分成员变量和局部变量重名
作者: 小曼_r9qDE    时间: 2015-12-6 23:35
###06.15_面向对象(this关键字的概述和应用)(掌握) * A:this关键字特点         * 代表当前对象的引用  * B:案例演示         * this的应用场景         * 用来区分成员变量和局部变量重名 ###06.16_面向对象(手机类代码及其测试)(掌握) * A:学生练习         * 请把手机类写成一个标准类,然后创建对象测试功能。                                   class Demo2_Phone {                                 public static void main(String[] args) {                                         Phone p1 = new Phone();                                         p1.setBrand("三星");                                         p1.setPrice(5288);                                                                  System.out.println(p1.getBrand() + "..." + p1.getPrice());                                         p1.call();                                         p1.sendMessage();                                         p1.playGame();                                 }                         }                         /*                         手机类                                 属性:品牌brand,价格price                                 行为:打电话call,发短信sendMessage,玩游戏,playGame                         */                         class Phone {                                                                //java bean                                 private String brand;                                        //品牌                                 private int price;                                                //价格                                                          public void setBrand(String brand) {        //设置品牌                                         this.brand = brand;                                 }                                                          public String getBrand() {                                //获取品牌                                         return this.brand;                                        //this.可以省略,你不加系统会默认给你加                                 }                                                          public void setPrice(int price) {                //设置价格                                         this.price = price;                                 }                                                          public int getPrice() {                                        //获取价格                                         return price;                                 }                                                          public void call() {                                        //打电话                                         System.out.println("打电话");                                 }                                                          public void sendMessage() {                                //发短信                                         System.out.println("发短信");                                 }                                                          public void playGame() {                                //玩游戏                                         System.out.println("玩游戏");                                 }                         }
作者: 小曼_r9qDE    时间: 2015-12-6 23:36
###06.15_面向对象(this关键字的概述和应用)(掌握)
* A:this关键字特点
        * 代表当前对象的引用
* B:案例演示
        * this的应用场景
        * 用来区分成员变量和局部变量重名

###06.16_面向对象(手机类代码及其测试)(掌握)
* A:学生练习
        * 请把手机类写成一个标准类,然后创建对象测试功能。
         
                        class Demo2_Phone {
                                public static void main(String[] args) {
                                        Phone p1 = new Phone();
                                        p1.setBrand("三星");
                                        p1.setPrice(5288);
                       
                                        System.out.println(p1.getBrand() + "..." + p1.getPrice());
                                        p1.call();
                                        p1.sendMessage();
                                        p1.playGame();
                                }
                        }
                        /*
                        手机类
                                属性:品牌brand,价格price
                                行为:打电话call,发短信sendMessage,玩游戏,playGame
                        */
                        class Phone {                                                                //java bean
                                private String brand;                                        //品牌
                                private int price;                                                //价格
                       
                                public void setBrand(String brand) {        //设置品牌
                                        this.brand = brand;
                                }
                       
                                public String getBrand() {                                //获取品牌
                                        return this.brand;                                        //this.可以省略,你不加系统会默认给你加
                                }
                       
                                public void setPrice(int price) {                //设置价格
                                        this.price = price;
                                }
                       
                                public int getPrice() {                                        //获取价格
                                        return price;
                                }
                       
                                public void call() {                                        //打电话
                                        System.out.println("打电话");
                                }
                       
                                public void sendMessage() {                                //发短信
                                        System.out.println("发短信");
                                }
                       
                                public void playGame() {                                //玩游戏
                                        System.out.println("玩游戏");
                                }
                        }
###06.17_day06总结
* 把今天的知识点总结一遍。
作者: 八宝    时间: 2015-12-6 23:54
嗯嗯,与之对应的super表示调用此类对象的超类,也是要用在构造函数的第一行
作者: oneforone9    时间: 2016-9-7 10:12
this:当前对象的引用         this定义在方法中,当哪个对象调用这个方法,则this代表哪个对象。         用法:                 使用this区分成员变量与局部变量                 在方法内,使用this访问的为成员变量,不用this访问的默认为局部变量。                 如果方法中访问了一个变量,而该方法中没有定义一个该名称的局部变量,则会继续从成员位置找该变量。
作者: 扶摇直上九万里    时间: 2016-9-7 12:03
1.代表当前对象的引用,谁来调用我 我就代表谁。
2.用来区分成员变量和局部变量。
作者: 毕加索    时间: 2016-9-16 23:36
最简单的记忆方法是  this用在本类中  结合父类的super记忆会更好
作者: ts5210ts    时间: 2016-9-18 00:41
嗯 楼上已经很全面了
作者: henryjavaee    时间: 2016-9-18 01:30
谁调用它,它就代表谁,一般是用在方法里
作者: 383412263    时间: 2016-9-28 16:28
Phy_zhang 发表于 2015-11-17 19:45
this最基本的用法就是区分局部变量与成员变量同名情况
例如:
class student

看看学习一下
作者: chensc    时间: 2016-9-28 22:31
学习学习!
作者: zhangyiling5    时间: 2016-9-28 23:52
this:本类对象的空间
访问本类对象成员变量  this.变量名
调用本类普通方法  this.方法名(参数)
本类构造方法调用本类其他构造本类构造方法第一行this(参数)
作者: bluehat    时间: 2016-9-29 00:00
这个指定是调用当前的对象,有时也可调用超类的
作者: 九局下半    时间: 2016-9-29 00:27
局部变量和成员变量重名的情况下。
作者: xianghui0521    时间: 2016-9-29 12:37
谁调用this  this就代表谁
作者: 读书可以当饭吃    时间: 2016-10-5 10:11
this就是本类对象,在自己的类中用自己的变量或方法时使用,一般可以省略
作者: 哦啊啊    时间: 2016-10-5 22:44
代表当前对象的引用 就酱
作者: hy000936    时间: 2016-10-5 23:19
谁调用this就指谁
作者: x379769646    时间: 2016-10-6 00:25
1. this是指当前对象自己。
2. 把this作为参数传递
3. 注意匿名类和内部类中的中的this。
4.在构造函数中,通过this可以调用同一class中别的构造函数,如





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2