package com.chensi;

/**
* 这个是为了搞懂那个 this.name = name的。
* @author ZHL
*
*/
public class ThisTestZhl { private int i = ; private String s = "zhl";
//第一个构造器
ThisTestZhl(int i){
System.out.println("第一个构造器");
//这时候的this。i 表示的是成员变量的i 是0,然后this。i = i ;这时候成员变类被局部变量赋值了
System.out.println("这个是this。i--"+(this.i));
System.out.println("这个是i--"+i);
System.out.println("----------");
this.i = i;
System.out.println("这个是i--"+i+"\n"+"这个是this。i--"+(this.i));
System.out.println("*********");
System.out.println("this.i----"+(this.i));
}
//第二个构造器
ThisTestZhl(String s){
System.out.println("第二个构造器");
System.out.println("s--"+s);
System.out.println("this.s---"+(this.s));
this.s = s;
System.out.println("---------");
System.out.println("字符串构造器"+s);
System.out.println("字符串构造器this.s--"+(this.s));
}
//第三个构造器 ,带有两个参数的构造器
ThisTestZhl(int i ,String s){
//this(i);
this(s);
System.out.println("第三个构造器");
} public ThisTestZhl increment(){
System.out.println("入口");
System.out.println("入口 i---"+i);
System.out.println("入口 this.i ---"+(this.i));
this.i++;
System.out.println("出口 i---"+i);
System.out.println("出口 this.i ---"+(this.i));
return this;
} public static void main(String[] args) {
ThisTestZhl tto = new ThisTestZhl();
//ThisTestZhl tto2 = new ThisTestZhl("豆豆");
//ThisTestZhl tto3 = new ThisTestZhl(10,"chensi");
System.out.println(tto.increment().increment().increment().i);
//tto.increment();
} /* this: 通过this可以调用本类的构造方法,成员变量,成员方法
* this() 调用构造方法
* this.变量名 调用成员变量
* this.方法名 调用成员方法
*/ /*
* 细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法: 1、表示对当前对象的引用! 2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。 3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始! 还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用! 说明在什么情况下需要用到this:
第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。
当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
*/ }

结果:

第一个构造器
这个是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. 洛谷 P3521 [POI2011]ROT-Tree Rotations 解题报告

    P3521 [POI2011]ROT-Tree Rotations 题意:递归给出给一棵\(n(1≤n≤200000)\)个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. 大体 ...

  2. Educational Codeforces Round 6 C

    C. Pearls in a Row time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. Star sky 二维前缀和

    C. Star sky time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  4. c++ string写时复制

    string写时复制:将字符串str1赋值给str2后,除非str1的内容已经被改变,否则str2和str1共享内存.当str1被修改之后,stl才为str2开辟内存空间,并初始化. #include ...

  5. Qt -------- 多线程编程

    一.继承QThread(不推荐) 定义一个类,继承QThread,重写run(),当调用方法start(),启动一个线程,run()函数运行结束,线程结束. 二.继承QRunnable Qrunnab ...

  6. 如何根据域名来得到对应的IP

    如何根据域名来得到对应的IP呢? windows下打开cmd窗口,然后ping.如下图: 这样就可以看到IP了. 如何查看自己电脑对应的IP? 当通过代理上网时,可能无法通过网络连接信息查看自己电脑的 ...

  7. linux查看内存cpu占用

    linux查看内存cpu占用top 命令  按q退出 可以添加额外选项选择按进程或按用户查看如: top -u gitu PID:进程idPR:进程的优先级别,越小越优先被执行NInice:值VIRT ...

  8. Linux常用命令汇总(持续更新中)

    命令 说明 注意点 cat access.log | wc -l 统计行数 awk命令可以做到同样的想过:cat access.log | awk 'END {print NR}' grep vnc  ...

  9. 用一个时钟在FPGA中计算直方图

    直方图对数字数据的分析通常是一种有用的工具.不过,要从一个直方图获得可靠的结果,必须获得大量数据,通常是要10万到100万个点.如果需要分析一个ADC的数字输出,可以采用一片FPGA(图1). 图中显 ...

  10. 【BZOJ2815】【ZJOI2012】灾难 [LCA]

    灾难 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 阿米巴是小强的好朋友.  阿米巴和小强 ...