1. package com.chensi;
  2.  
  3. /**
  4. * 这个是为了搞懂那个 this.name = name的。
  5. * @author ZHL
  6. *
  7. */
  8. public class ThisTestZhl {
  9.  
  10. private int i = ;
  11.  
  12. private String s = "zhl";
  13. //第一个构造器
  14. ThisTestZhl(int i){
  15. System.out.println("第一个构造器");
  16. //这时候的this。i 表示的是成员变量的i 是0,然后this。i = i ;这时候成员变类被局部变量赋值了
  17. System.out.println("这个是this。i--"+(this.i));
  18. System.out.println("这个是i--"+i);
  19. System.out.println("----------");
  20. this.i = i;
  21. System.out.println("这个是i--"+i+"\n"+"这个是this。i--"+(this.i));
  22. System.out.println("*********");
  23. System.out.println("this.i----"+(this.i));
  24. }
  25. //第二个构造器
  26. ThisTestZhl(String s){
  27. System.out.println("第二个构造器");
  28. System.out.println("s--"+s);
  29. System.out.println("this.s---"+(this.s));
  30. this.s = s;
  31. System.out.println("---------");
  32. System.out.println("字符串构造器"+s);
  33. System.out.println("字符串构造器this.s--"+(this.s));
  34. }
  35. //第三个构造器 ,带有两个参数的构造器
  36. ThisTestZhl(int i ,String s){
  37. //this(i);
  38. this(s);
  39. System.out.println("第三个构造器");
  40. }
  41.  
  42. public ThisTestZhl increment(){
  43. System.out.println("入口");
  44. System.out.println("入口 i---"+i);
  45. System.out.println("入口 this.i ---"+(this.i));
  46. this.i++;
  47. System.out.println("出口 i---"+i);
  48. System.out.println("出口 this.i ---"+(this.i));
  49. return this;
  50. }
  51.  
  52. public static void main(String[] args) {
  53. ThisTestZhl tto = new ThisTestZhl();
  54. //ThisTestZhl tto2 = new ThisTestZhl("豆豆");
  55. //ThisTestZhl tto3 = new ThisTestZhl(10,"chensi");
  56. System.out.println(tto.increment().increment().increment().i);
  57. //tto.increment();
  58. }
  59.  
  60. /* this: 通过this可以调用本类的构造方法,成员变量,成员方法
  61. * this() 调用构造方法
  62. * this.变量名 调用成员变量
  63. * this.方法名 调用成员方法
  64. */
  65.  
  66. /*
  67. *
  68.  
  69. 细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:
  70.  
  71. 1、表示对当前对象的引用!
  72.  
  73. 2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
  74.  
  75. 3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
  76.  
  77. 还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
  78.  
  79. 说明在什么情况下需要用到this:
  80. 第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
  81. 第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。
  82. 当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
  83. 第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
  84. 其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
  85. */
  86.  
  87. }

结果:

第一个构造器
这个是this。i--0
这个是i--10
----------
这个是i--10
这个是this。i--10
*********
this.i----10
入口
入口 i---10
入口 this.i ---10
出口 i---11
出口 this.i ---11
入口
入口 i---11
入口 this.i ---11
出口 i---12
出口 this.i ---12
入口
入口 i---12
入口 this.i ---12
出口 i---13
出口 this.i ---13
13

java中this的用法如:this.name=name的更多相关文章

  1. java中this的用法?

    2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...

  2. 转:十八、java中this的用法

    http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...

  3. Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...

  4. java成神之——java中string的用法

    java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...

  5. java中stringBuilder的用法

    java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需 ...

  6. 第一篇 网站基础知识 第4章 Java中Socket的用法

    第4章 Java中Socket的用法 4.1 普通Socket的用法 Java中的网络通信是通过Socket实现的,Socket分为ServetSocket和Socket两大类,ServetSocke ...

  7. Java中的Socket用法

    转发链接:https://www.cnblogs.com/zhanglei93/p/6217384.html (1)Java中的Socket用法 Java中的Socket分为普通的Socket和Nio ...

  8. 初探java中this的用法

    一般this在各类语言中都表示“调用当前函数的对象”,java中也存在这种用法: public class Leaf { int i = 0; Leaf increment(){ i++; retur ...

  9. Java中getResourceAsStream的用法

    首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在 ...

  10. Java中Synchronized的用法

    原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)——以 ...

随机推荐

  1. BZOJ3143:[HNOI2013]游走——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3143 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随 ...

  2. BZOJ3932:[CQOI2015]任务查询系统——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3932 题面源于洛谷 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成 ...

  3. HDU.1233 还是畅通工程(Prim)

    HDU.1233 还是畅通工程(Prim) 题意分析 首先给出n,代表村庄的个数 然后出n*(n-1)/2个信息,每个信息包括村庄的起点,终点,距离, 要求求出最小生成树的权值之和. 注意村庄的编号从 ...

  4. bzoj2083: [Poi2010]Intelligence test(二分+vector)

    只是记录一下vector的用法 v.push_back(x)加入x v.pop_back()弹出最后一个元素 v[x]=v.back(),v.pop_back()删除x,但是会打乱vector顺序 v ...

  5. bzoj 3673&3674 可持久化并查集&加强版(可持久化线段树+启发式合并)

    CCZ在2015年8月25日也就是初三暑假要结束的时候就已经能切这种题了%%% 学习了另一种启发式合并的方法,按秩合并,也就是按树的深度合并,实际上是和按树的大小一个道理,但是感觉(至少在这题上)更好 ...

  6. SELECT LAST_INSERT_ID() 的使用和注意事项

    SELECT LAST_INSERT_ID() 的使用和注意事项 尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/7130 ...

  7. [10.12模拟赛] 老大 (二分/树的直径/树形dp)

    [10.12模拟赛] 老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图), ...

  8. 团队题目需求分析-NABCD

    Need: 由本人亲身体验出发,觉得很多同学记不住老师留的作业,或者上课时间记录了,但是老是忘记到底记录了什么,导致没有半大写作业,所以准备设计一个东西来帮助同学. A: 首先,我最先想到的是手机,所 ...

  9. 简单的web小程序

    首先我们先编写一个jsp表面的程序, <%@ page language="java" contentType="text/html; charset=UTF-8& ...

  10. Linux下find命令及其参数的使用

    find命令原理:从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件,并可以对其进行相关的操作. 格式:find [查找目录] [参数] [匹配模型] 多参数格式:find [查找目 ...