A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 怀瑾 中级黑马   /  2015-11-17 18:59  /  3056 人查看  /  41 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候用this,解释this的用法?

41 个回复

倒序浏览
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语句只能定义在构造函数的第一行,因为初始化要先执行

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
有条就近原则!
回复 使用道具 举报
不错 我刚这个问题有点晕乎
回复 使用道具 举报
本帖最后由 大耳冬 于 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是全局变量然后  第三步就代表给全局变量赋值了。
回复 使用道具 举报
this  一般用在构造函数里(有参和set get),  用来指的是当前引用对象.
回复 使用道具 举报 1 0
this指当前对象的引用, 就近原则, 记住这个就可以了
回复 使用道具 举报
本类对象,指代当前对象
回复 使用道具 举报
当前对象的引用
this:用于区分局部变量和成员变量重名的情况;用于构造函数间调用的情况

this:代表本类的对象

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

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

构造函数之间进行调用时用this(XXX)语句;
this语句只能放在构造函数的第一行;因为初始化动作要先执行。
回复 使用道具 举报
当前对象(方法)的引用
回复 使用道具 举报
哪个对象调用方法,该方法内部的this就代表哪个对象
回复 使用道具 举报
面向对象(this关键字的概述和应用)(掌握) * A:this关键字特点         * 代表当前对象的引用  * B:案例演示         * this的应用场景         * 用来区分成员变量和局部变量重名
回复 使用道具 举报
###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.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总结
* 把今天的知识点总结一遍。
回复 使用道具 举报
嗯嗯,与之对应的super表示调用此类对象的超类,也是要用在构造函数的第一行
回复 使用道具 举报
this:当前对象的引用         this定义在方法中,当哪个对象调用这个方法,则this代表哪个对象。         用法:                 使用this区分成员变量与局部变量                 在方法内,使用this访问的为成员变量,不用this访问的默认为局部变量。                 如果方法中访问了一个变量,而该方法中没有定义一个该名称的局部变量,则会继续从成员位置找该变量。
回复 使用道具 举报
扶摇直上九万里 来自手机 初级黑马 2016-9-7 12:03:31
17#
1.代表当前对象的引用,谁来调用我 我就代表谁。
2.用来区分成员变量和局部变量。
回复 使用道具 举报
最简单的记忆方法是  this用在本类中  结合父类的super记忆会更好
回复 使用道具 举报
嗯 楼上已经很全面了
回复 使用道具 举报
谁调用它,它就代表谁,一般是用在方法里
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马