文档章节

this关键字的使用

皮蛋瘦肉粥里没有粥
 皮蛋瘦肉粥里没有粥
发布于 2017/04/25 15:45
字数 459
阅读 12
收藏 1

通常,我们说的this表示的是"当前对象",简单的说说this使用需要注意的地方,温故而知新嘛。

    ①如果一个类有多个构造方法,那么可以在一个构造方法里面通过this调用另外一个构造方法。如:   

    public ThisTest(){
		System.out.println("通过this()方法调用ThisTest()构造器!");
	}
	
	public ThisTest(int i ){
		//调用无参构造器
		this();
		System.out.println("i="+i);
	}

②若为其赋予一个参数的话,this关键字就会自动匹配参数相同的构造方法。如

    public ThisTest(String str){
      //TODO
    }
    public ThisTest(int i){
		System.out.println("如果this关键字附带参数,就会自动匹配与之相同的构造器");
	}
	
	public ThisTest(int i ){
		
		this(i);	//this关键字自动匹配形参相同的构造器	
	}

③同一个构造方法里面不能有两次this调用。如:

​
    public ThisTest(){
      System.out.print("-------------------");
    }
    public ThisTest(int i){
		System.out.println("i="+i);
	}
	
	public ThisTest(int i ){
		this();
//		this(i);	//同一个构造器里面不能有两次this调用
	}

​

④不能在构造方法之外任何方法里面使用this来调用构造函数。如:


    public ThisTest(int i){
		System.out.println("i="+i);
	}
	
	private void f(int i ){
		
//		this(i);	//在方法中不能通过this关键字来调用构造函数
	}
    
    
   public static void main(String[] args){
//       this();     //在main方法中也不能通过this来调用构造函数
   }
​

⑤方法中不必通过this来调用另一个方法。如:

​
    public void _f(int i){
      //TODO
    }
    
	public void f(int i ){
		
//		this._f(i);  	//方法中不必通过this关键字来调用另外一个方法	
        _f(i);         //而是直接调用
	}

​

⑥通过this.只能调用类的成员变量。如:

  public class ThisTest{
     private String m ;
     
     public ThisTest(String m){
        this.m = m;  //this只能引用成员变量,即便是局部参数和成员参数名相同

     }

     public ThisTest(String n){
//      this.n;     //这是错误的引用
     }
  }

 

© 著作权归作者所有

皮蛋瘦肉粥里没有粥
粉丝 11
博文 58
码字总数 20373
作品 0
朝阳
后端工程师
私信 提问
带有机器人框架的.NET自动化测试

  Clayton Neal在软件测试和质量保证方面有超过13年的经验,其中有八年的Windows, web,和移动应用程序的测试自动化经验。他在测试领域的所有等级都工作过。最近他在Bloomberg and Misys...

糖糖豆豆
2014/10/16
0
1
RabbitMQ入门(5)--主题

主题(topic) (使用Java客户端) 在先前的指南中我们改进了我们的日志系统。取代使用类型的交易所,那个仅仅有能力实现哑的广播,我们使用一个类型的交易所,获得一个可以有选择性的接收日志...

-悟空-
2015/02/24
0
1
[译] Javascript 中最长的关键字序列长什么样子?

原文地址:What's the longest keyword sequence in Javascript? 原文作者:Leo Horie 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:xionglong58 校对者:Endone,...

熊咆龙吟
03/18
0
0
Linux 命令手册 – man

man 命令,这个命令是 Linux 下的帮助命令,通过这个命令可以快速查询 Linux 中的命令帮助、配置文件帮助和编程帮助等信息,并且格式化显示。 使用语法 $ man [选项][参数] 选项说明 -a:显示...

palink
2017/08/06
0
0
python入门(二)---函数

函数 python中自带一些全局函数,比如在js中封装在math对象的数学方法:max、min、abs,也有可以用于数据转换的函数:int、str;用于遍历的方法:all、any。官网上可以看到https://docs.pyth...

TokenYang
2017/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

研究下这代码,用到了guava和线程池

import com.google.common.util.concurrent.FutureCallback;import com.google.common.util.concurrent.Futures;import com.google.common.util.concurrent.ListenableFuture;import c......

暗中观察
3分钟前
0
0
《css 揭秘》 之垂直居中的实现

最近看了 Lea Verou 的 《css揭秘》一书,让我对自己的 css学习产生了深深的怀疑。这本书真是太棒了,里面涉及到很多优雅又有趣的效果实现,真的是非常棒。如果你有时间,十分建议你去看看。...

IrisHuang
9分钟前
0
0
java 抽象类(2)

/*需求: 描述一个图形、圆形、 矩形三个类。不管哪种图形都会具备计算面积与周长的行为,但是每种图形计算的方式不一致而已。常量的命名规范:全部字母大写,单词与单词 之间 使用下...

hellation_
11分钟前
0
0
总结:堆和栈

堆 堆比较好理解,即存放对象的地方。这里的对象由GC管理 1、类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的内存地址存放于栈以便于高速访问。静态变量的生命...

浮躁的码农
17分钟前
1
0
JavaScript 新语法详解:Class 的私有属性与私有方法

译者按: 为什么偏要用**#**符号? 原文:JavaScript's new #private class fields 译者:Fundebug 本文采用意译,版权归原作者所有 proposal-class-fields与proposal-private-methods定义了 ...

Fundebug
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部