this关键字主要有三个作用

1.调用本类中的属性。

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           p1.getInfo();
 5       }
 6 }
 7
 8 class Person{
 9     String name;
10     int age;
11     public Person(String n, int a){
12         name = n;
13         age = a;
14     }
15     public String getInfo(){
16         System.out.println();
17         return null;
18     }
19 }

上述程序可以正常运行,但是构造方法中形参名称对于我们来说不便于识别,那我们可不可以这样呢?

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           p1.getInfo();
 5       }
 6 }
 7
 8 class Person{
 9     String name;
10     int age;
11     public Person(String name, int age){ //将形参名称和类中属性名称一致,这样可以便于我们识别。
12         name = name;                     //但是这个程序可以正常运行吗?显然是不能的,这个里的
13         age = age;                       //name = name 都是形参变量本身,相当于自己给自己赋值
14     }                                    //这是不行的。
15     public String getInfo(){
16         System.out.println();
17         return null;
18     }
19 }

这时我们就以用this关键字来实现在构造方法中调用类的属性。

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           p1.getInfo();
 5       }
 6 }
 7
 8 class Person{
 9     String name;
10     int age;
11     public Person(String name, int age){
12         this.name = name;      //name起来么加了this就代表这个属性是类中的属性,后面的name是形参。
13         this.age = age;        //这样就没有问题了
14     }
15     public String getInfo(){
16         System.out.println();
17         return null;
18     }
19 }

2.调用构造方法。

例如

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person("hcf", 21);
 4           p1.getInfo();
 5       }
 6 }
 7
 8 class Person{
 9     String name;
10     int age;
11     public Person(){
12         System.out.println("调用了无参的构造方法Person()"); //无参的构造方法被调用就会打印出此语句。
13     }
14     public Person(String name, int age){
15         this();                                         //通过this()调用无参的构造方法。
16         this.name = name;                               //此代码运行完我们会发现,打印出了“调用了无参的构造方法...”
17         this.age = age;                                 /说明我们实现了通过this()调用了构造方法。
18     }
19     public String getInfo(){
20         System.out.println(name +"\n" + age);
21         return null;
22     }
23 }

3.代表当前对象

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           Person p2 = new Person();
 5           System.out.println(p1); //打印p1的地址
 6           p1.getInfo();           //调用p1中的getInfo()方法,打印当前this的地址
 7           System.out.println(p2); //打印p2的地址
 8           p2.getInfo();           //调用p2中的getInfo()方法,打印当前this的地址。
 9
10
11       }
12 }
13
14 class Person{
15     public String getInfo(){
16         System.out.println(this);   //this代表当前对象,例如调用p1.getInfo()方法,此时打印的this就是p1
17         return null;                //同理,调用p2.getInfo()方法,打印的this就是p2.
18     }                               //所以该代码运行后,p1和p1.getInfo();输出的结果是相同的,
19 }                                   //p2和P2.getInfo()方法输出的结果也是相同的。

转载于:https://www.cnblogs.com/huang-changfan/p/9313391.html

1.5(java学习笔记)this关键字相关推荐

  1. (JAVA学习笔记) static关键字详解

    静态方法,静态变量 //static public class Studnet {private static int age; //静态的变量 可以直接调用private double score; ...

  2. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  3. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  4. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  5. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  6. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  7. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

  8. java学习笔记8--接口总结

    接着前面的学习: java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3- ...

  9. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  10. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

最新文章

  1. Java语言程序设计实验指导_《java语言程序设计》上机实验指导手册(4).doc
  2. Shell获取时间,日期,上月,当月,下月
  3. html适配Anroid手机
  4. VMware安装CentOS之二——最小化安装CentOS
  5. Eclipse3.7 Indigo 字体设置为Courier New
  6. 用clipboard.js实现纯JS复制文本到剪切板
  7. c语言以顺序结构存储的二叉树的非递归遍历,C语言二叉树的非递归遍历实例分析...
  8. LoNg wAy tO Go
  9. Under the Hoods of Cache Fusion, GES, GRD and GCS
  10. 写给大家看的设计模式
  11. 自定义线程池-c#的简单实现
  12. python开源bi_推荐一套开源BI工具?
  13. 软考-系统分析师知识大纲及分数
  14. 高阶的Parser:可变运算优先级
  15. 如何利用信息差赚钱?分享二个案例给你!
  16. 产品界的三大定律 --周宏桥
  17. 世界就是一个班(转自大鸟BLOG)
  18. 无人机倾斜摄影测量影像处理关键技术
  19. 前端js——倒计时效果实现 动态显示倒计时
  20. 学习项目管理理论后的体会

热门文章

  1. SVN增加文件后,文件无法自动包括在项目中的原因
  2. MyBatis 基础知识
  3. fasthttp中的协程池实现
  4. Hbase笔记:批量导入
  5. javaScript面试题大全
  6. WITH (NOLOCK)提高查询效率
  7. Source Insight 生成函数调用关系图
  8. 模板 - 洲阁筛 + min25筛
  9. SpringBoot添加拦截器
  10. hdu 1394Minimum Inversion Number