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

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

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

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

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

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可以调用其它构造方法,但是此语句必须放在构造方法的首行

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

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

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

    前几天去家公司面试,有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是 ...

  2. NEW关键字的三种用法

    最近面试中有一道题是写new关键字的几种用法,想了下写下我知道的两种用法 第一种 创建对象.调用构造函数,这就不用讲了 ClassA  A=new ClassA(); 第二种 是作为修饰符,显示隐藏继 ...

  3. c# new关键字的三种用法

    三种用法如下: 在 C# 中,new 关键字可用作运算符.修饰符或约束. 1)new 运算符:用于创建对象和调用构造函数. 2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成 ...

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

    1.1.1        如何定义一个字典 此处我们说的字典,其实就等同于python语言中的字典,和列表一样,字典也是python语言中非常常用的一种数据结构,也类似于Java 语言中的Map. 在 ...

  5. java中 this 关键字的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

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

    public DateTime? StatusDateTime = null; 脑子便也出现个问号,这是什么意思呢?网上搜下,总结如下: 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不 ...

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

    public DateTime? StatusDateTime = null; 脑子便也出现个问号,这是什么意思呢?网上搜下,总结如下: 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不 ...

  8. Java中的this关键字老生常谈

    一.this的由来  this关键字就是获得调用当前方法对象的引用. 二.注意点 this关键字只能出现在方法内部,完成对调用该方法的对象的引用. 三.this关键字的三个用处 1.最主要的用处: 获 ...

  9. yield关键字详解与三种用法

    本篇文章比较硬核, 适合有一定Python基础的读者阅读, 如果您对Python还不甚了解可以先关注我哦, 我会持续更新Python技术文章 yield详解 yield与return相同每次调用都会返 ...

随机推荐

  1. CF1015F

    玄学字符串dp... 题意:给定一个括号序列,求长度为2n的合法的括号序列的个数(要求每个被统计的合法序列中均至少有一个子串为给定的括号序列) 题解: 这题没有想的那么复杂,就是暴力的一个dp 首先我 ...

  2. CF1005F

    这题不错... 首先,不难看到他想让你求出的是最短路树 然后,考虑到所有边权均为1,所以可以采用bfs直接生成最短路树 至于方案的储存,可以在加边的时候同时记录边的编号,然后对每个点维护一个能转移他的 ...

  3. 第七周学习总结-C#

    2018年8月26日 这个周二突然得知另一位老师留的暑假作业,群文件里早就上传了,我居然一直没翻到那里,要不是同学问作业做完没,我可能开学就要“真●裸考”了

  4. mysql出现10060错误

    报错内容如下 Can't connect to MySQL server (10060) 提示不能连接 mysql服务. 首先检查任务管理器 看看mysqld.exe进程有没有启动.如果启动了就强制结 ...

  5. excel vba获取拼音

    Function PinYin2(Hz As String) Dim PinMa As String Dim MyPinMa As Variant Dim Temp As Integer, i As ...

  6. Haproxy重刷一次

    centos上,yum安装,完全无难度. 只是设置时,要注意一下跳转,和nginx规则差不多. https://blog.csdn.net/qq_28710983/article/details/82 ...

  7. 【java细节】Java代码忽略https证书:No subject alternative names present

    https://blog.csdn.net/audioo1/article/details/51746333

  8. awk常见用法

    awk作为linux字符搜索,结果统计的实用工具,其在linux日常运维中有着很多的巧妙运用.下面就来技术一下刚刚学到的技巧 #awk命令统计文件夹下所有文件大小 ls -l |awk 'BEGIN ...

  9. bootstrap下jQuery自动完成的样式调整-【jQuery】

    1. 覆盖层调整 在bootstrap的对话框中,当其中的输入项使用了自动完成控件,则其中下拉框中的内容就会被bootstrap对话框的覆盖层遮盖. 为了能够使后面的自动完成的层显示出来,可以使用如下 ...

  10. 一起学Hadoop——TotalOrderPartitioner类实现全局排序

    Hadoop排序,从大的范围来说有两种排序,一种是按照key排序,一种是按照value排序.如果按照value排序,只需在map函数中将key和value对调,然后在reduce函数中在对调回去.从小 ...