1.5(java学习笔记)this关键字
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关键字相关推荐
- (JAVA学习笔记) static关键字详解
静态方法,静态变量 //static public class Studnet {private static int age; //静态的变量 可以直接调用private double score; ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
- java学习笔记8--接口总结
接着前面的学习: java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3- ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- Java学习笔记二:数据类型
Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...
最新文章
- Java语言程序设计实验指导_《java语言程序设计》上机实验指导手册(4).doc
- Shell获取时间,日期,上月,当月,下月
- html适配Anroid手机
- VMware安装CentOS之二——最小化安装CentOS
- Eclipse3.7 Indigo 字体设置为Courier New
- 用clipboard.js实现纯JS复制文本到剪切板
- c语言以顺序结构存储的二叉树的非递归遍历,C语言二叉树的非递归遍历实例分析...
- LoNg wAy tO Go
- Under the Hoods of Cache Fusion, GES, GRD and GCS
- 写给大家看的设计模式
- 自定义线程池-c#的简单实现
- python开源bi_推荐一套开源BI工具?
- 软考-系统分析师知识大纲及分数
- 高阶的Parser:可变运算优先级
- 如何利用信息差赚钱?分享二个案例给你!
- 产品界的三大定律 --周宏桥
- 世界就是一个班(转自大鸟BLOG)
- 无人机倾斜摄影测量影像处理关键技术
- 前端js——倒计时效果实现 动态显示倒计时
- 学习项目管理理论后的体会