黑马程序员技术交流社区
标题:
有个地方看不懂,大家分析下。
[打印本页]
作者:
莫盛强
时间:
2015-11-27 11:10
标题:
有个地方看不懂,大家分析下。
public class Test21 implements Runnable{
private int[] arr = new int[100];
private int count = 0;
public void run(){
while(true){
synchronized (this) {
Thread.yield();
for(int i=0;i<3;i++){//第二次循环进来,count应该是0啊?
int num = (int)(Math.random()*5)+1;
System.out.println(Thread.currentThread().getName()+"为数组第"+count+"个索引写入了"+num);
count++;//第一次count从0自增为1
if(count<arr.length){
arr[count-1] = num;//为了索引从1-1变成0
}else{
return;
}
}
}
}
}
public static void main(String[] args) {
Test21 mt = new Test21();
Thread t1 = new Thread(mt);
t1.setName("线程1");
Thread t2 = new Thread(mt);
t2.setName("线程2");
t1.start();
t2.start();
}
}
复制代码
作者:
莫盛强
时间:
2015-11-27 11:13
如图所示。一个变量判断循环条件还有数组索引。先自增再-1,但并不影响程序,难道变量自增自减与其它操作语句无关。程序正常,只是自己一下子懵了,理解不了。
作者:
欧欧拐
时间:
2015-11-27 11:29
我也就来看看,虽然也不懂,帮你顶上去让大神看
作者:
赵存金
时间:
2015-11-27 12:09
第一次arr[count -1] = num ; count -1 并没有改变count的值。还是1。第二再调用run方法 count的值就是1。然后加1。变为2。
作者:
赵存金
时间:
2015-11-27 12:10
你把 count-1 和count--弄混了吧。。
作者:
冰霜之卅
时间:
2015-11-27 13:44
count=0;
count++; 等同于count=count+1;
count=1
int x=count-1;
x才是0 ;
count 依然还是1 ;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2