用类名定义一个变量的时候,定义的应该只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法,那们类里面是够也应该有一个引用来访问自己的属性和方法纳?呵呵,JAVA提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法。先来个简单的例子:

public classThisDemo {

String name="Mick";

public voidprint(String name){

System.out.println("类中的属性 name="+this.name);

System.out.println("局部传参的属性="+name);

}

public static voidmain(String[] args) {

ThisDemo tt=newThisDemo();

tt.print("Orson");

}

}

关于返回类自身的引用,Thing in Java有个很经典的例子,通过this 这个关键字返回自身这个对象然后在一条语句里面实现多次的操作,还是贴出来。

public classThisDemo {

intnumber;

ThisDemo increment(){

number++;

return this;

}

private voidprint(){

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

}

public static voidmain(String[] args) {

ThisDemo tt=newThisDemo();

tt.increment().increment().increment().print();

}

}

那也应该在一个类中定义两个构造函数,在一个构造函数中通过 this 这个引用来调用另一个构造函数,这样应该可以实现,这样的实现机制在实际做应用开发的时候有会有什么样子的用处纳?贴下写的代码:

public classThisDemo {

String name;

intage;

publicThisDemo (){

this.age=21;

}

public ThisDemo(String name,intage){

this();

this.name="Mick";

}

private voidprint(){

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

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

}

public static voidmain(String[] args) {

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

tt.print();

}

}

看上面这段代码虽然很短,理解起来似乎也很顺理成章,在有参数的构造函数中赋值name 在无参数的当中赋值age属性。但我个人觉得其中有点问题,实例化一个类应该先为对象ThisDemo分配内存,先调用构造函数ThisDemo(String name,int age),执行到第一行的时候,调用ThisDemo()构造函数,也就是说这里应该会有两个内存空间的,一个是ThisDemo(String name,int age)执行到一点的空间和另一个是ThisDemo()执行空间,为什么最后打印出来的结果是都实例化了一个对象中的两个属性name和age纳?请大牛赐教!

总结一下:

1) this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性;

2)可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数(这里面上面有个问题)

java zh_java 中zhis的用法相关推荐

  1. Java程序中Timer的用法

    Java程序中Timer的用法 import java.io.IOException; import java.util.Timer; public class CheckTimer {/*** @p ...

  2. java stream中Collectors的用法

    文章目录 简介 Collectors.toList() Collectors.toSet() Collectors.toCollection() Collectors.toMap() Collecto ...

  3. java项目中enum的用法_java中enum的用法

    本文实例讲述了java中enum的用法.分享给大家供大家参考.具体分析如下: 1. 基本用法 enum Day { SUNDAY, MONDAY, TUESDAY, WENDSDAY, THURSDA ...

  4. java jna_Java中jna的用法

    (1)jna是对jni的封装,让java使用者能更好的使用本地的动态库 (2)使用jna需要下载jna的jar包,该jar包就是对jni的封装,所以在调用效率上来讲,jna是要比jni低一点的,不过对 ...

  5. java stringtoarray_java中toArray()的用法

    一直不太熟悉toarray()的用法 现整理如下 一.Incident public static void main(String[] args) { List list = new ArrayLi ...

  6. java new_Java中new的用法

    Java语言中,new的作用是为一个对象(Object)分配内存,代码清单1-1说明了为各种Object分配内存的方法. 代码清单1-1 为各种Object分配内存的方法 int a = 20;    ...

  7. java typeof_js中typeof的用法汇总

    JavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法. > typeof undefin ...

  8. java string中indexOf()常用用法

    Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String st ...

  9. java datainputstream_Java中DataInputStream的用法

    展开全部 1.DataOutputStream:数据输出流允许e5a48de588b63231313335323631343130323136353331333337396239应用程序以适当方式将基 ...

  10. Java项目中 log4j的用法

    1.在程序中导入jar:log4j-1.2.17.jar 2.新建文件log4j.properties放置在项目目录下,并增加代码行: log4j.rootLogger=INFO,CONSOLE,Da ...

最新文章

  1. php获取请求路径_如何获取php.ini文件路径?
  2. 让JTextField添加“自动完成”功能
  3. 计算机网络应用押韵句,现代汉语练习题
  4. Java集合之HashSet源码分析
  5. 数据结构期末复习之选择排序
  6. Java:数组排序输出
  7. java 正则表达式 数量
  8. 主题切换时如何主动去刷新一些资源?
  9. python内容限制_Python --类,实例和访问限制
  10. Blender:雕刻笔刷动态图解(一)
  11. 计算机撤销英语,正在撤销对计算机所做的更改要等多久
  12. pyenv、ipython、jupyter的安装使用
  13. 淘晶驰串口屏_ 串口屏卡顿的原因
  14. PS案例实战,从基础到精通 淘宝美工/海报制作/人物精修-姜浩-专题视频课程
  15. XCTF-Normal_RSA 萌新版解题WriteUp
  16. Linux学习路线浅谈
  17. 三星T5硬盘测试软件AS SSD及问题
  18. Windows九大常用密码
  19. Matlab中米粒图像处理,米粒个数和大小计算
  20. 大数据分析师 - 技术体系 - 了解篇

热门文章

  1. s一般怎么称呼自己的m_英文信的开头和结尾,怎么写才不会出错?
  2. 我的信念 -居里夫人
  3. 机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)
  4. 快速集成一个视频直播功能
  5. 0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11
  6. STC15单片机使用AT命令的C语言编程
  7. 一名优秀的数据分析师应该具备这10项关键技能
  8. String对象的match方法
  9. 【高等数学】曲线的切线与法平面和曲面的切平面与法线
  10. 百度网盘下载加速(pc端)