`
_大端
  • 浏览: 3255 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

this关键字的三种常见用法

    博客分类:
  • J2se
阅读更多

属个人收藏

 

参考文献链接:http://mougaidong-163-com.iteye.com/blog/994934

 

                  http://www.cnblogs.com/java-class/archive/2012/12/19/2825463.html

 

                  http://blog.csdn.net/anmei2010/article/details/4091227 

 

              http://www.cnblogs.com/-cyb/articles/Java-this.html

 

每当一个对象创建后,Java虚拟机会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this的用法。这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。

 

1、局部变量与成员变量重名,函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽局部变量隐藏成员变量,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。注意区别成员变量和局部变量

 

2、方法参数与成员变量重名

public class Hello {

    String s = "Hello";

 

    public Hello(String s) {

       System.out.println("s = " + s);

       System.out.println("1 -> this.s = " + this.s);

       this.s = s;//把参数值赋给成员变量,成员变量的值改变

       System.out.println("2 -> this.s = " + this.s);

    }

 

    public static void main(String[] args) {

       Hello x = new Hello("HelloWorld!");

       System.out.println("s=" + x.s);//验证成员变量值的改变

    }

}

结果为:s = HelloWorld!

1 -> this.s = Hello

2 -> this.s = HelloWorld!

s=HelloWorld!

3、调用该类的另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。如果构造方法中调用另一个构造方法,则该语句必须是第一条语句。

public class ThisDemo {  

    String name;

    int age;

    public ThisDemo (){ 

        this.age=21;

   }     

    public ThisDemo(String name,int age){

        this();

        this.name="Mick";

    }     

  private void print(){

         System.out.println("最终名字="+this.name);

         System.out.println("最终的年龄="+this.age);

    }

    public static void main(String[] args) {

       ThisDemo tt=new ThisDemo("",0); //随便传进去的参数       tt.print();

    }

}

 

(没有看懂案例)4在函数中,需要引用该函所属类的当前对象时候,直接用this。把this作为参数传递 
当你要把自己作为参数传递给别的对象时,也可以用this。

把自己当作参数传递时,也可以用this.(this作当前参数进行传递)

      class A {

    public A() {

       new B(this).print();// 调用B的方法

    }

    public void print() {

       System.out.println("HelloAA from A!");

    }

}

class B {

    A a;

    public B(A a) {

       this.a = a;

    }

    public void print() {

       a.print();//调用A的方法

       System.out.println("HelloAB from B!");

    }

}

public class HelloA {

    public static void main(String[] args) {

       A aaa = new A();

       aaa.print();

       B bbb = new B(aaa);

       bbb.print();

    }

}

 结果为:HelloAA from A!

        HelloAB from B!

        HelloAA from A!

        HelloAA from A!

        HelloAB from B!

在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。

 

 

(暂时没有找相关资料)5、匿名类和内部类中的中的this

 

 

其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!

 

分享到:
评论

相关推荐

    php类中的$this,static,final,const,self这几个关键字使用方法

    本篇文章主要分项了一下关于php类中的$this,static,final,const,self这几个关键字使用方法。  $this  $this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value=’phpernote’...

    明仔PHP面向对象(六日通)教程

    5-1 对象中的$this关键字 5-2 初始化对象函数 __construct() 5-3 析构函数 __destruct() 5-4 不使用$this的简单例子 5-5 使用$this的简单例子 5-6 使用初始化+$this+释放函数 (六)类的封装和应用 6-1 类的封装和应用...

    porter-keywords:提取给定文本的 (n) 个最常见的词干关键字

    提取 (n) 给定文本中最常见的词干关键字。 安装 npm install porter-keywords 用法 var PorterKeywords = require ( 'porter-keywords' ) ; PorterKeywords . extract ( 'this is a tasty burger' ) ; // ['tasti...

    JavaScript函数的4种调用方法详解

    这里所有的调用模式中,最主要的区别在于关键字 this 的意义,下面分别介绍这个几种调用形式。 本文主要内容: 1.分析函数的四种调用形式2.弄清楚函数中this的意义3.明确构造函对象的过程4.学会使用上下文调用函数 ...

    【04-面向对象(上)】

    •一个类里可以包含三种最常见的成员:构造器、属性、方法。 定义属性的格式语法 •[修饰符] 属性类型 属性名 [= 默认值]; 定义方法的格式语法 •[修饰符] 方法返回值类型 方法名(形参列表) {….方法...

    JAVA基础课程讲义

    this关键字 65 static 关键字 66 静态初始化块(经常用来初始化类,加载类信息时执行!) 67 package 68 JDK中的主要包 68 import 68 eclipse的使用 69 继承(extend, inheritance) 70 为什么需要继承?继承的作用? ...

    AIC的Java课程1-6章

     明白this引用的两种用法。  弄清对象类型与基本类型的区别。  掌握private, public访问控制符。  理解和使用关键字static。 第5章 面向对象(继承) 4课时  理解继承,超类,...

    Java面试宝典2020修订版V1.0.1.doc

    42、一个静态方法,里面可不可以用this和super关键字 24 三、JavaScript/JQuery/Ajax部分 24 1、用js和jQuery怎么进行表单验证 24 3、列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。 24 4、...

    java基础案例与开发详解案例源码全

    5.7 this关键字148 5.8 JavaBean149 5.9 包150 5.9.1 为什么需要包?150 5.9.2 如何创建包151 5.9.3 编译并生成包:151 5.9.4 使用带包的类152 5.9.5 JDK中常用包介绍152 5.1 0本章练习153 第6章 6.1 继承156 6.1.1 ...

    Java 基础核心总结 +经典算法大全.rar

    null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 BIO BIO NIO 和 AIO 的区别什么是流 流的分类 节点流和处理流 Java ...

    Java2实用教程.rar

    4 5this关键字 4 6包 4 6 1包语句 4 6 2import语句 4 6 3将类打包 4 7访问权限 4 7 1私有变量和私有方法 4 7 2共有变量和共有方法 4 7 3友好变量和友好方法 4 7 4受保护的成员变量和方法 4 7 5public类与友好类 4 8...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段03讲、介绍三种高效优雅的Singleton实现方式.wmv │ 高并发编程第二阶段04讲、多线程的休息室WaitSet详细介绍与知识点总结.mp4 │ 高并发编程第二阶段05讲、一个解释volatile关键字作用最好...

    AIX基础PPT

    ● 是系统于用户的接口 ● 系统支持很多种shell,其中常见的有三种Shell :(Korn Bourne C)● 系统赋予用户缺省Shell是kshshell的功能作用有:● 命令解释程序● 支持前后台执行● 可编程 文本处理 AIX提供的文本处理...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段03讲、介绍三种高效优雅的Singleton实现方式.wmv │ 高并发编程第二阶段04讲、多线程的休息室WaitSet详细介绍与知识点总结.mp4 │ 高并发编程第二阶段05讲、一个解释volatile关键字作用最好...

    simple-factory:一种工厂方法来统治所有人

    简单工厂 一个工厂创建工厂,听起来很奇怪吧? 但是它有它的用途! 安装 通过npm,将其另存为依赖项。 npm i simple-factory --save var simpleFactory = ...2.避免使用新关键字 有些人不喜欢在javascript中使用n

    C#本质论(第3版)

    5.4 使用this关键字 5.5 访问修饰符 5.6 属性 5.6.1 属性的声明 5.6.2 自动实现的属性 5.6.3 命名规范 5.6.4 提供属性验证 5.6.5 读和只写属性 5.6.6 为取值方法和赋值方法指定访问修饰符 5.6.7 属性作为...

    C语言程序设计标准教程

    从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支结构、循环结构。 这三种基本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。 本章介绍这些基本语句及其应用,使...

    php反射学习之不用new方法实例化类操作示例

    上一篇php反射入门示例简单介绍了 php 反射的几个常见类的使用方法,但是用反射能做些什么,你可能还是想象不到, 下面我稍微应用反射类来做点东西,大家知道实例化一个类需要用new 关键字,不用 new 可以吗?答案是...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例267 解决SESSION中的常见问题 353 实例268 控制页面的访问权限 354 实例269 将SESSION数据存储到数据库中 355 实例270 SESSION更换聊天室界面 357 实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形...

Global site tag (gtag.js) - Google Analytics