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方法时会有两个不同的对象!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值