java中this是实例吗_java中this用法实例
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用法实例相关推荐
- java trim函数的使用方法_java trim的用法实例详解
rim方法一般用来去除空格,但是根据JDK API的说明,该方法并不仅仅是去除空格,它能够去除从编码'\u0000′ 至 '\u0020′ 的所有字符. 回车换行也在这20个字符之中,以下是一个示例: ...
- PHP中的常见魔术方法功能作用及用法实例
这篇文章主要介绍了PHP中的常见魔术方法功能作用及用法实例,本文讲解了构造函数和析构函数__construct()和__desctruct()以及属性重载(Property Overloading)_ ...
- python整段代码注释-Python中注释(多行注释和单行注释)的用法实例
Python中注释(多行注释和单行注释)的用法实例 发布时间:2020-09-30 23:18:32 来源:脚本之家 阅读:97 前言 学会向程序中添加必要的注释,也是很重要的.注释不仅可以用来解释程 ...
- java静态变量实例变量_java中静态变量和实例变量的区别
实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用 静态变量:不需要创建实例对象就可以直接使用类名进行引用 public class Different { public static in ...
- Java中非法参数的异常_Java中的异常
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...
- java的自增自减_Java中自增和自减操作符(++/--)的那些事
自增(++)和自减(--)运算符 在JAVA语言中存在着很多运算符,但是在实际开发中我们或许很少用到它们,在初次学习中却时常出现它们的身影,对于这些运算符的含义和用法,是否还记得呢? 1. 概述 自增 ...
- java中String类是什么_Java中字符串的学习(一)String类的概述及常见方法使用
转载请注明出处http://www.cnblogs.com/devtrees/p/4347079.html (拓展:Api:编程语言对外给我们提供的应用程序接口.) 一.概述: 我们平时上网发帖,帖子 ...
- java怎样将日期本土化_Java中的日期操作
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...
- java中怎么判断字符相等_Java中如何判断两个字符串相等
如何判断两个字符串相等 Java 中可以有两种方法来做这个事,== 运算符 与 equals 方法.但是这两者又有什么区别? 先来看一段示例代码: String a1 = "abc" ...
最新文章
- php ob_flush无效,php ob_flush,flush在ie中缓冲无效的解决方法
- [转载]Python方法绑定——Unbound/Bound method object的一些梳理
- ​shell中经常能看到的:/dev/null 21
- 电脑:分享八个实用的电脑技巧,小白必备!
- JS你可能还不知道的一些知识点(一)
- oracle命令分析3
- linux恢复硬盘工具,linux硬盘数据恢复工具
- Reverse digits of an integer
- git init、git status、git config user.name、git add、git commit、git remote、git push、git clone、git pull
- Flex的Tree全部展开收缩,ji展开选中单个节点
- one大白陪你聊聊2021年总结
- 语音识别项目报告.pdf
- order调用mdp
- 6-6-树的孩子链表(带双亲)存储表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...
- ACCESS数据库如何设置密码
- RabbitMQ与spring的集成,,基础。
- android摄像头录像避坑指东
- 摄像头录像存储计算方式
- YARN任务监控界面Aggregate Resource Allocation指标解析
- 【编程规范】 后端API接口设计编写与文档编写参考
热门文章
- JS在HTML中放的位置
- (C语言)验证哥德巴赫猜想,输入一个大于6的偶数,输出这个数能被分解为哪两个质数的和
- go tcp客户端自动重连_深入分析TCP的keepalive和time_wait,总能发现新东西
- 服务器系统 比较,各种服务器操作系统比较
- android dex2oatd e,解決android項目Error:Execution failed for task ':app:dexDebug'.ebug'錯誤
- 蚂蚁课堂-第四期-基于springcloud构建微服务电商项目_阿里巴巴29个屌炸天的开源项目,你用过几个?附编程资料!!!...
- C++之文件操作探究(二):读文件——文本文件
- java 代码检验表不存在_诊断 Java 代码: Liar View 错误模式
- component多个 vue_VUE多个组件示例
- java 栈的变量_深入Java核心:JVM中的栈和局部变量