实质就是:this代表当前对象
目录:
  1.this(name) 调用同一个类中参数为
   public Person(String name)这个构造方法
2.this.say() 同一个类中,某一个方法调用非static的say()方法
3.this.name //当前对象的name属性
4.比较两个对象是否相等 first:进行地址比较 second:进行内容比较


class Person {
private String name;
private int age;
/*至少保证一个没有this调用构造方法,保证递归调用的出口*/
public Person() {
System.out.println("*** 一个新的Person类对象被实例化******");
} public Person(String name) {
this(); // 调用无参构造
this.name = name;
} public Person(String name, int age) {
this(name); // 调用有一个参数的构造,这句话调用的是灰色部分的函数
this.age = age;
} // setter、getter略 /*自己写的*************************/
public Person(double haha){
System.out.println("只进行输出操作");
}
public Person(int age){
this(10.21);
this.age = 10;
this.name="lcy";
}
/********************************/ public String getInfo() {
return "姓名:" + this.name + ",年龄:" + this.age;
}
} public class Test {
public static void main(String args[]) {
Person per = new Person("张三", 20);
System.out.println(per.getInfo()); *** 一个新的Person类对象被实例化******
姓名:张三,年龄:20 Person per1 = new Person("张四");
System.out.println(per1.getInfo()); *** 一个新的Person类对象被实例化******
姓名:张四,年龄:0 Person per2 = new Person(100000000);
System.out.println(per2.getInfo()); 只进行输出操作
姓名:lcy,年龄:10
}
}
/** 相互调用构造方法在new对象的时候
构造方法:调用其他构造使用“this()”调用。
例如:现在一个类之中存在了三个构造方法(无参、有一个参数、有两个参数),
但是不管使用何种构造方法,都要求在实例化对象产生的时候输出一行提示信息:
“一个新的类对象被实例化”(假设这个信息等于50行代码)
*/
_________________________________________________________
this表示当前对象
当前对象指的是当前正在调用本类方法的操作对象,下面首先来验证一下。
class Demo {
private int filed =100;
public void say(){
System.out.println(123456);
}
public void print() {
System.out.println("当前对象:" + this);
this.say();
System.out.println(this.filed);
}
} public class Test {
public static void main(String args[]) {
Demo demo1 = new Demo();
Demo demo2 = new Demo();
System.out.println(demo1);
demo1.print();
System.out.println(demo2);
demo2.print(); }
} Demo@2a139a55
当前对象:Demo@2a139a55
123456
100 Demo@15db9742
当前对象:Demo@15db9742
123456
100 程序中Person类中定义了一个compare方法,此方法的主要功能就是专门完成两个对象的比较操作,
在比较时,首先进行地址的比较,如果两个对象的地址一样,则肯定是同一个对象,
而如果地址不相等,则将一个个属性依次进行比较。对象比较操作在开发中是一个重要的概念,要重点掌握
class Person {
  private String name ;
  private int age ;
  public Person(String name,int age) {
  this.name = name ;
  this.age = age ;
}
// 一个类可以接收本类引用
// 接收完成之后可以直接调用本类中的私有操作
public boolean compare(Person per) {
if (per == null) {
return false ; // 直接返回false
}
if (this == per) { // 地址相同
return true ;
}
// 这样一来在compare()方法之中有两个对象:传入的Person,另外一个是this
if (this.name.equals(per.name)
&& this.age == per.age) {
return true ;
}
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 TestDemo {
public static void main(String args[]) {
Person per1 = new Person("张三",20) ;
Person per2 = new Person("张三",20) ;
if (per1.compare(per1)) {
System.out.println("是同一个对象。") ;
} else {
System.out.println("不是同一个对象。") ;
}
}
}

this关键字的使用8/22的更多相关文章

  1. StyleCop的常见错误

    所有规则的翻译(基于版本4.7.44.0): 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialElementsMustB ...

  2. StyleCop学习笔记——默认的规则

    在StyleCop中有一些官方自己写好的检测规则下面就是英文的解释 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialEl ...

  3. JavaSE_ 面向对象 总目录(7~10)

    JavaSE学习总结第07天_面向对象2 07.01 成员变量和局部变量的区别07.02 方法的形式参数是类名的调用07.03 匿名对象的概述和应用07.04 封装的概述07.05 封装的好处和设计原 ...

  4. StyleCop中有一些官方自己写好的检测规则下面就是英文的解释

    在StyleCop中有一些官方自己写好的检测规则下面就是英文的解释 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialEl ...

  5. 2019PHP面试题最全面归纳总结

    1.请选择以下代码运行的结果: <?php if ('1e3' == '1000') echo 'LOL'; ?> A 无任何输出结果  B   LOL  C 不执行且报错 解析:1e3 ...

  6. 70个注意的Python小Notes

    Python读书笔记:70个注意的小Notes 作者:白宁超 2018年7月9日10:58:18 摘要:在阅读python相关书籍中,对其进行简单的笔记纪要.旨在注意一些细节问题,在今后项目中灵活运用 ...

  7. python学习笔记14-函数

    使用关键字def来创建函数  注意缩进 函数命名规则: 1.必须以下划线或者字母开头 2.区分大小写 3.不能是保留字 调用函数一定记得加括号 def print_info(name,age) pri ...

  8. C#代码规范和质量检查工具

    代码风格检查:StyleCop The StyleCop tool provides warnings that indicate style and consistency rule violati ...

  9. JAVA核心编程教学

    常用类 Ø 1.1 String和StringBuffer String类封装了对字符串的常见操作,使用频率非常高,所以应该熟练掌握, String类的方法比较多,无需死记硬背,而是大概了解,用的时候 ...

随机推荐

  1. Scrapy结构

    http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html scrapy 使用Twisted 这个异步网络库来处理网络通信,使用pyt ...

  2. SQL-18 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by

    题目描述 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no.薪水salary.last_name以及first_name,不准使用order byCREATE ...

  3. MyEclipse使用教程:使用REST Web Services管理JPA实体

    MyEclipse 在线订购专享特惠!火爆开抢>> MyEclipse最新版下载 使用REST Web Services来管理JPA实体.在逆向工程数据库表后生成REST Web服务,下面 ...

  4. 杭电多校第四场 E Matrix from Arrays

    Problem E. Matrix from Arrays Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 ...

  5. 牛客多校第四场 F Beautiful Garden

    链接:https://www.nowcoder.com/acm/contest/142/F来源:牛客网 题目描述 There's a beautiful garden whose size is n ...

  6. Linux可重入函数和线程安全的区别与联系(转)

    *****可重入函数 函数被不同的控制流程调用,有可能在第一次调用还没返回时就再次进入该函数,这称为重入. 当程序运行到某一个函数的时候,可能因为硬件中断或者异常而使得在用户正在执行的代码暂时终端转而 ...

  7. Nginx 自动补全url地址补全最后的斜线

    参考地址: http://blog.csdn.net/dong123dddd/article/details/51660368 location /riskcontrol { root /data; ...

  8. 界面设计-Edit控件的Style设置

    以下文字转贴ChinaCock QQ 223717588群: 1. 首先在Form上放一个TEdit类型控件Edit1,最终的效果如下图: 2.选中控件Edit1,点击鼠标右键,在弹出菜单中选择“Ed ...

  9. JAVA数组与List相互转换

    1.数组转成List 数组转成List可以用方法 :Arrays.asList,一起来了解一下 System.out.println(Arrays.asList(new String[] { &quo ...

  10. SQL注入之Sqli-labs系列第八篇(基于布尔盲注的注入)

    开始挑战第八关(Blind- Boolian- Single Quotes- String) 这关首先需要用到以下函数: 开始测试,使用测试语句,利用单引号进行闭合 猜解字段 union select ...