1:this在构造方法中:this可以进行构造方法中的相互调用,this(参数);

2:this调用方法中,代表调用该方法的对象的地址,例如下面的代码比较

  1. package thisTest;
  2.  
  3. public class Student {
  4.  
  5. public static void main(String[] args) {
  6. Student student = new Student();
  7. System.out.println(student);
  8. student.run();
  9. }
  10. public void run() {
  11. System.out.println(this);//this代表当前调用这个方法的对象的地址
  12. }
  13. }

输出结果是:thisTest.Student@52e922
      thisTest.Student@52e922   所以可以明显看到this和创建的student是相同的东西,都代表创建对象所在栈的地址。

还有一个就是,在另外一个方法中调用另一个方法,我们知道直接可以进行方法名(实参列表)来调用,其实实际上是this.方法名(实参列表)  理解:this代表调用这个方法的一个实例对象,那么this.方法名(实参列表)就是对象调用了一个方法,很容易理解啦,但是和构造方法不同的是:方法直接的调用是this.   来相互调用的,所用this可以 省略,但是在构造方法中是用this(参数列表)来进行多个构造方法中的相互调用,所以this无法省略,更重要的区别是:构造方法this只能用一次,因为只能放在有效代码的首句,首句只有一个,所以就只能来一次,而普通方法中的可以N多次。

3:this调用属性:在一个方法中如果存在了一个和类中的成员变量同名的局部变量,这个时候如果要用全局变量的值则需要用this来调用,原因:局部变量会对全局变量进行覆盖,this代表调用这个方法时的当前实例对象,那么this.name就是全局变量了,很好理解吧。

注意:::::::!!!!this不能使用在静态方法中,原因:this是代表实例对象,static修饰的静态方法是类加载时就分配了方法的入口地址,

所以不可能在加载时有实例对象的

下面有几个考察this的代码,试着区分一下, 检查自己的理解成果:

  1. public class Student {
  2.  
  3. String name;
  4.  
  5. void doHomework(){
  6. System.out.println(this.name+"正在做作业.......");
  7. }
  8.  
  9. void speak(){
  10. new Student().doHomework();
  11. System.out.println(name+"正在说话......");
  12. }
  13.  
  14. public static void main(String[] args) {
  15. Student student = new Student();
  16. student.speak();
  17. }
  18. }
  1. public class Student {
  2.  
  3. String name;
  4.  
  5. void doHomework(){
  6. System.out.println(this.name+"正在做作业.......");
  7. }
  8.  
  9. public static void main(String[] args) {
  10. Student student = new Student();
  11. student.name="王五";
  12. student.doHomework();
  13. }
  14. }
  1. public class Student {
  2.  
  3. String name;
  4.  
  5. void doHomework(){
  6. System.out.println(this.name+"正在做作业.......");
  7. name="刘颖";
  8. }
  9.  
  10. void speak(){
  11. System.out.println(name+"正在说话......");
  12. }
  13.  
  14. public static void main(String[] args) {
  15. Student student = new Student();
  16. student.doHomework();
  17. student.speak();
  18. }
  19. }
  1. public class Student {
  2.  
  3. int age;
  4. String name;
  5.  
  6. public Student(int age) {
  7. this.age = age;
  8. }
  9. public Student(String name) {
  10. this.name = name;
  11. }
  12. public Student(int age, String name) {
  13. this(age);
  14. new Student(name);
  15. }
  16. public static void main(String[] args) {
  17. new Student(12, "王五");
  18. }
  19. }
  1. public class Student {
  2.  
  3. int age;
  4. String name;
  5.  
  6. public Student(int age) {
  7. this.age = age;
  8. }
  9. public Student(String name) {
  10. this.name = name;
  11. }
  12. public Student(int age, String name) {
  13. this(age);
  14. new Student(name);
  15. }
  16. public static void main(String[] args) {
  17. new Student(12, "王五");
  18. }
  19. }
  1. public class Student {
  2.  
  3. String name;
  4.  
  5. public static void print() {
  6. System.out.println(this.name);
  7. }
  8. public static void main(String[] args) {
  9. print();
  10. }
  11. }

java中this总结(转载请注明出处)的更多相关文章

  1. Java程序员面试宝典1 ---Java基础部分(该博文为原创,转载请注明出处)

    (该博文为原创,转载请注明出处   http://www.cnblogs.com/luyijoy/  by白手伊凡) 1.    基本概念 1)         Java为解释性语言,运行过程:程序源 ...

  2. 转载请注明出处: https://github.com/qiu-deqing/FE-interview

    转载请注明出处: https://github.com/qiu-deqing/FE-interview Table of Contents generated with DocToc FE-inter ...

  3. 移动端H5页面遇到的问题总结(转载请注明出处)

    最近刚做完一个移动端的项目,产品之无敌,过程之艰辛,我就不多说了,记录下在这个项目中遇到的问题,以防万一,虽然这些可能都是已经被N多前辈解决掉了的问题,也放在这里,算是为自己漫漫前端路铺了一颗小石子儿 ...

  4. java 代码解压7z(带密码)转载请注明出处,谢谢

    <sevenzipjbinding.version>9.20-2.00beta</sevenzipjbinding.version> <dependency> &l ...

  5. 原创centos7安装hadoop2.7(转载请注明出处)

    启用ip vi /etc/sysconfig/network-scripts/ifcfg-ONBOOT=yes 编辑DNS /etc/resolv.conf nameserver 114.114.11 ...

  6. Apache2.4权限配置(原创帖-转载请注明出处)

    ==================说在前面的话================= 1:这次实验使用的php项目是Discuz,Discuz的安装请参照:http://www.cnblogs.com/ ...

  7. LAMP环境搭建 (原创帖,转载请注明出处)

    =============================说在前面的话==========================第一安装Mysql第二安装Apache-httpd第三安装PHP 第四配置PH ...

  8. Discuz的安装 (原创帖,转载请注明出处)

    ========================写在前面的话========================= 1.LAMP环境搭建请查看这篇日志:http://www.cnblogs.com/yic ...

  9. 阿里云服务器SQLSERVER 2019 远程服务器环境搭建【原创】【转载请注明出处】

    之前做过本地服务器SQLSERVER环境搭建.局域网环境SQLSERVER搭建.一直没有尝试自己完成一个云端服务器的环境搭建.今天就根据一个成功的例子给大家分享一下. 一.云端数据库安装与搭建 我的服 ...

随机推荐

  1. 【python / mxnet / gluoncv / jupyter notebook】基于mxnet和gluoncv的图像分割

    程序环境为高性能集群: CPU:Intel Xeon Gold 6140 Processor * 2(共36核心)内存:512GB RAMGPU:Tesla P100-PCIE-16GB * 2 In ...

  2. mysql 存储过程中使用动态sql语句

    Mysql 5.0 以后,支持了动态sql语句,我们可以通过传递不同的参数得到我们想要的值 这里介绍两种在存储过程中的动态sql: set sql = (预处理的sql语句,可以是用concat拼接的 ...

  3. mintUI 移动UI框架入门

    入门地址: http://mint-ui.github.io/#!/zh-cn 下载依赖cd到项目目录下, 下载我们用的UI框架: 分为全局引入和按需引入 全局引入: npm install mint ...

  4. tensorflow实现线性回归总结

    1.知识点 """ 模拟一个y = 0.7x+0.8的案例 报警: 1.initialize_all_variables (from tensorflow.python. ...

  5. 在Linux中使用minikube

    Minikebe Minikube是一个轻量级Kubernetes实现,它在本地机器上创建一个VM,并部署一个只包含一个节点的简单集群. Minikube使用Docker机器来管理Kubernetes ...

  6. HNU_团队项目_需求分析感想(全员)

    以下为软件1701-“洋芋好想飞”的需求分析感想 PM QXS 需求分析过程中的前进与曲折令我深刻地认识到,需求分析是一个动态的过程,而非一个静态的任务结点. 比如最初我们设想可以为用户设定角色,但最 ...

  7. vue中局部封装axios

    Vue中局部配置axios 'use strict' import axios from 'axios'; import { Loading } from 'element-ui'; export c ...

  8. Django 邮箱找回密码!!!!!!!!!!!!!!!!

    1.大概流程. @首先在完善登陆页面,增加忘记密码的链接. @为了账户安全,需要对操作者进行验证,向邮箱发随机数验证! @在重置验证码页面,验证验证码是否匹配(验证成功跳转至更改密码也页面). @ 重 ...

  9. 描述下fastJSON,jackson等等的技术

    ①Jackson:依赖的jar包较少,简单易用性能高,更新速度也比较快,但是对于复杂类型的json转换bean会出 现问题,一些集合Map,List的转换出现问题,对于复杂类型的bean转换Json, ...

  10. 8 Spring / Spring MVC / Mybatis 框架相关知识点

    1)Spring 的 IOC 和 AOP 有了解吗? IOC:控制反转,不需要手动 new 对象,将其交给 Spring 容器,降低程序耦合度. AOP:面向切面编程,动态代理技术.