java中this用法实例,java this关键字的使用。this关键字,关于它的解释,可以概括为:哪一个对象在用这段代码,this就代表谁。

例如,“人”这个类,张三说,“我”的“名字”,这个“我”字就相当于“this”。

举个列子,一目了然。

public class ThisDemo {

public static void main(String[] args) {

ThisPerson p1 = new ThisPerson();

p1.name = “zhangsan”;

p1.talk(“lisi”);

p1.say(“lisi”);

}

}

class ThisPerson{

String name ;

public void talk(String name){

System.out.println(“My name is “+name);

}

public void say(String name){

System.out.println(“My name is “+this.name);

}

}

主要用在方法传递时,如talk方法,传了个this进来,那么方法体中的name指的是传进来的,还是这个类的?

结果输出:

My name is lisi

My name is zhangsan

如果要说高级一点,可以用线程同步来说:

public class ThreadSynA{

public static void main(String[] args) {

/*ThreadSynAA ti = new ThreadSynAA();

Thread t1 = new Thread(ti);

Thread t2 = new Thread(ti);*/

Thread t1 = new ThreadSynAB();

Thread t2 = new ThreadSynAB();

t1.start();

t2.start();

}

}

class ThreadSynAA implements Runnable{

int a = 100;

public void run(){

while(true){

synchronized(this){

System.out.println(Thread.currentThread().getName()+”–”+a);

a–;

Thread.yield();

if(a<1){

break;

}

}

}

}

}

class ThreadSynAB extends Thread{

int a = 100;

public void run(){

while(true){

synchronized(this){

System.out.println(Thread.currentThread().getName()+”–”+a);

a–;

Thread.yield();

if(a<1){

break;

}

}

}

}

}

用ThreadSynAB创建的线程,是不能同步的,而ThreadSynAA则可以!

因为ThreadSynAA中的this代表这个类的对象,可以看到,我们只创建了一个ThreadSynAA,也就是只写了一次new ThreadSynAA()。

ThreadSynAA ti = new ThreadSynAA();

Thread t1 = new Thread(ti);

Thread t2 = new Thread(ti);

Thread t1 = new ThreadSynAB();

Thread t2 = new ThreadSynAB();

而ThreadSynAB却new了两次,很显然进入run方法时会有两个不同的对象!

java中this是实例吗_java中this用法实例相关推荐

  1. java trim函数的使用方法_java trim的用法实例详解

    rim方法一般用来去除空格,但是根据JDK API的说明,该方法并不仅仅是去除空格,它能够去除从编码'\u0000′ 至 '\u0020′ 的所有字符. 回车换行也在这20个字符之中,以下是一个示例: ...

  2. PHP中的常见魔术方法功能作用及用法实例

    这篇文章主要介绍了PHP中的常见魔术方法功能作用及用法实例,本文讲解了构造函数和析构函数__construct()和__desctruct()以及属性重载(Property Overloading)_ ...

  3. python整段代码注释-Python中注释(多行注释和单行注释)的用法实例

    Python中注释(多行注释和单行注释)的用法实例 发布时间:2020-09-30 23:18:32 来源:脚本之家 阅读:97 前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程 ...

  4. java静态变量实例变量_java中静态变量和实例变量的区别

    实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用 静态变量:不需要创建实例对象就可以直接使用类名进行引用 public class Different { public static in ...

  5. Java中非法参数的异常_Java中的异常

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  6. java的自增自减_Java中自增和自减操作符(++/--)的那些事

    自增(++)和自减(--)运算符 在JAVA语言中存在着很多运算符,但是在实际开发中我们或许很少用到它们,在初次学习中却时常出现它们的身影,对于这些运算符的含义和用法,是否还记得呢? 1. 概述 自增 ...

  7. java中String类是什么_Java中字符串的学习(一)String类的概述及常见方法使用

    转载请注明出处http://www.cnblogs.com/devtrees/p/4347079.html (拓展:Api:编程语言对外给我们提供的应用程序接口.) 一.概述: 我们平时上网发帖,帖子 ...

  8. java怎样将日期本土化_Java中的日期操作

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  9. java中怎么判断字符相等_Java中如何判断两个字符串相等

    如何判断两个字符串相等 Java 中可以有两种方法来做这个事,== 运算符 与 equals 方法.但是这两者又有什么区别? 先来看一段示例代码: String a1 = "abc" ...

最新文章

  1. php ob_flush无效,php ob_flush,flush在ie中缓冲无效的解决方法
  2. [转载]Python方法绑定——Unbound/Bound method object的一些梳理
  3. ​shell中经常能看到的:/dev/null 21
  4. 电脑:分享八个实用的电脑技巧,小白必备!
  5. JS你可能还不知道的一些知识点(一)
  6. oracle命令分析3
  7. linux恢复硬盘工具,linux硬盘数据恢复工具
  8. Reverse digits of an integer
  9. git init、git status、git config user.name、git add、git commit、git remote、git push、git clone、git pull
  10. Flex的Tree全部展开收缩,ji展开选中单个节点
  11. one大白陪你聊聊2021年总结
  12. 语音识别项目报告.pdf
  13. order调用mdp
  14. 6-6-树的孩子链表(带双亲)存储表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...
  15. ACCESS数据库如何设置密码
  16. RabbitMQ与spring的集成,,基础。
  17. android摄像头录像避坑指东
  18. 摄像头录像存储计算方式
  19. YARN任务监控界面Aggregate Resource Allocation指标解析
  20. 【编程规范】 后端API接口设计编写与文档编写参考

热门文章

  1. JS在HTML中放的位置
  2. (C语言)验证哥德巴赫猜想,输入一个大于6的偶数,输出这个数能被分解为哪两个质数的和
  3. go tcp客户端自动重连_深入分析TCP的keepalive和time_wait,总能发现新东西
  4. 服务器系统 比较,各种服务器操作系统比较
  5. android dex2oatd e,解決android項目Error:Execution failed for task ':app:dexDebug'.ebug'錯誤
  6. 蚂蚁课堂-第四期-基于springcloud构建微服务电商项目_阿里巴巴29个屌炸天的开源项目,你用过几个?附编程资料!!!...
  7. C++之文件操作探究(二):读文件——文本文件
  8. java 代码检验表不存在_诊断 Java 代码: Liar View 错误模式
  9. component多个 vue_VUE多个组件示例
  10. java 栈的变量_深入Java核心:JVM中的栈和局部变量