This 关键字的三个用处

---恢复内容开始---

1、this调用本类中的属性,也就是类中的成员变量

2、this调用本类中的其他构造方法,调用时要放在构造方法的首行。

 1、this调用本类中的属性,也就是类中的成员变量

1 class Person{        // 定义Person类
 2     private String name ;        // 姓名
 3     private int age ;            // 年龄
 4     public Person(String name,int age){    // 通过构造方法赋值
 5         this.name = name ; // 为类中的name属性赋值
 6         this.age = age ;// 为类中的age属性赋值
 7     }
 8     public String getInfo(){    // 取得信息的方法
 9         return "姓名:" + name + ",年龄:" + age ;
10     }
11 };
12 public class ThisDemo02{
13     public static void main(String args[]){
14         Person per1 = new Person("张三",33) ;    // 调用构造实例化对象
15         System.out.println(per1.getInfo()) ;    // 取得信息
16     }
17 };

this.name  this.age分别为类的属性name 和age赋值

this调用本类中的其他构造方法,调用时要放在构造方法的首行。class Person{        // 定义Person类
    private String name ;        // 姓名
    private int age ;            // 年龄
    public Person(){    // 无参构造
        System.out.println("新对象实例化") ;
    }
    public Person(String name){
        this() ;// 调用本类中的无参构造方法
        this.name = name ;

    }
    public Person(String name,int age){    // 通过构造方法赋值
        this(name) ;// 调用有一个参数的构造方法
        this.age = age ;// 为类中的age属性赋值
    }
    public String getInfo(){    // 取得信息的方法\
        return "姓名:" + name + ",年龄:" + age ;
    }
};
public class ThisDemo04{
    public static void main(String args[]){
        Person per1 = new Person("张三",33) ;    // 调用构造实例化对象
        System.out.println(per1.getInfo()) ;    // 取得信息
    }
};

  首先定义无参构造函数Person 并且由 System.out.println("新对象实例化") ;输出一句语句 第二个定义了一个有参的构造函数 String name  并且由this()调用了第一个无参函数Person() 第三个定义了有两个参数的构造函数 同时 this(name)是调用了上一个构造方法Person(String name)  同时 下面的this.age位age属性赋值

执行结果如下:

this表示当前对象class Person{        // 定义Person类
    private String name ;    // 姓名
    private int age ;        // 年龄
    public Person(String name,int age){
        this.setName(name) ;
        this.setAge(age) ;
    }
    public boolean compare(Person per){
        // 调用此方法时里面存在两个对象:当前对象、传入的对象
        Person p1 = this ;    // 当前的对象,就表示per1
        Person p2 = per ;    // 传递进来的对象,就表示per2
        if(p1==p2){    // 判断是不是同一个对象,用地址比较
            return true ;
        }
        // 之后分别判断每一个属性是否相等
        if(p1.name.equals(p2.name)&&p1.age==p2.age){
            return true ;    // 两个对象相等
        }else{
            return false ;    // 两个对象不相等
        }
    }
    public void setName(String name){    // 设置姓名
        this.name = name ;
    }
    public void setAge(int age){        // 设置年龄
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public int getAge(){
        return this.age ;
    }
};
public class ThisDemo08{
    public static void main(String args[]){
        Person per1 = new Person("张三",30) ;    // 声明两个对象,内容完全相等
        Person per2 = new Person("张三",30) ;    // 声明两个对象,内容完全相等
        // 直接在主方法中依次取得各个属性进行比较
        if(per1.compare(per2)){
            System.out.println("两个对象相等!") ;
        }else{
            System.out.println("两个对象不相等!") ;
        }
    }
};

  this表当前对象和其他对象作比较  像张三和李四作比较 由张三调用李四 然后和李四进行比较

if(per1.compare(per2))

同时定义了构造函数compare(Person per)由张三调用compare函数 将李四调进去尽享比较。
    Person p1 = this ;    // 当前的对象,就表示per1                   表示当前对象
       Person p2 = per ;    // 传递进来的对象,就表示per2
总结  This.属性 this.()方法实际上都表示了当前的对象的属姓或者当前对象调用的方法  this的核心 表示当前对象 当前正在操作本方法的对象称之为当前对象  this可以调用其它构造方法,但是此语句必须放在构造方法的首行

---恢复内容结束---

原文地址:https://www.cnblogs.com/ivan999/p/10324823.html

时间: 2024-10-28 02:05:32

This 关键字的三个用处的相关文章

C# ?(问号)的三个用处(转载)

public DateTime? StatusDateTime = null; 脑子便也出现个问号,这是什么意思呢?网上搜下,总结如下: 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:string str=null; 是正确的,int i=null; 编译器就会报错. 为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?" 例如:int? 表示可空的整形,DateTim

C# ?(问号)的三个用处

public DateTime? StatusDateTime = null; 脑子便也出现个问号,这是什么意思呢?网上搜下,总结如下: 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:string str=null; 是正确的,int i=null; 编译器就会报错. 为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?" 例如:int? 表示可空的整形,DateTim

关于C#问号(?)的三个用处

最近在写代码时候,经常遇到的问题"关于C#问号(?)的三个用处",虽然不是什么很NB的事情,但是我觉得积累下来还是有用的,所以就总结一下: 1. 可空类型修饰符(?):  引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:string str=null; 是正确的,int i=null; 编译器就会报错.  为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?" 例如:int? 表示

同一个关键字,三种匹配方式投放的问题

同一个关键字,用3种匹配方式投放,调整出价的时候应该怎么调整. 一般情况下,这三种匹配方式指的是精确匹配,词组匹配和广泛匹配.为什么要有这三种匹配方式? 个人感觉原因就是你发现有一个词是自己产品的很准确的关键词,当你添加到账户之后,运用某种匹配方式,如词组匹配,运行一段时间,发现展示量很少,CTR很低,这时候,你会考虑是否要更改匹配方式,如更改成广泛匹配,但更改的同时你不知道会带来怎么样的后果,所以就直接在原账户里添加一个广泛匹配和精确匹配(即完全匹配),如[A],"A",A然后从搜索

.NET(c#)new关键字的三种用法

前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是在Framework 2.0 中定义泛行时才会使用到的,自己对c# 2.0 中的支持还只是粗通皮毛,怪不得累死so many脑细胞也没能想不出这第三种来! 三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数.这种大家都比较熟悉,没

第1例——static关键字的三种作用

术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量.随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数.为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义.最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数. 第一种作用: 程序开始时为静态变量分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. // demo0

NEW关键字的三种用法

声明:本文最初是本人从他出转载到51CTO上的一篇文章,但现在记不清最初从出处了,原文作者看到还请原来,现在发表在这里只为学习,本人在51CTO的该文章的地址为:http://kestrelsaga.blog.51cto.com/3015222/751536 一.             new运算符 ①     用于创建对象和调用构造函数. 例如: Class1 obj  = new Class1(); ②     还可用于创建匿名类型的实例: var query = from cust in

RobotFramework自动化测试框架的基础关键字(三)

1.1.1        如何定义一个字典 此处我们说的字典,其实就等同于python语言中的字典,和列表一样,字典也是python语言中非常常用的一种数据结构,也类似于Java 语言中的Map. 在RobotFramework中,使用Create Dictionary来床架一个字典,比如我们定义一个字典:Dict1,并且我们再创建字典时,向字典中添加两个键值对,并且使用log many 关键字将这个字典中的内容全部输出出来. Log many 关键字类似于log 关键字,不同的是,log关键字

this和super关键字的常见三种用法

super和this的含义 super :代表父类的存储空间标识(可以理解为父亲的引用). this :代表当前对象的引用(谁调用就代表谁). super关键字的三种用法: 在子类的成员方法中,访问父类的成员变量格式:super.成员变量名: 在子类的成员方法中,访问父类的成员方法格式:super.方法变量名: 在子类的构造方法中,访问父类的构造方法格式:super(): this关键字的三种用法: 在本类成员方法中,访问本类的成员变量格式:this.变量名 在本类成员方法中,访问本类的另一个成