黑马程序员技术交流社区

标题: 有个地方看不懂,大家分析下。 [打印本页]

作者: 莫盛强    时间: 2015-11-27 11:10
标题: 有个地方看不懂,大家分析下。
  1. public class Test21 implements Runnable{
  2.         private int[] arr = new int[100];
  3.         private int count = 0;
  4.         public void run(){
  5.                 while(true){
  6.                         synchronized (this) {
  7.                                 Thread.yield();
  8.                                 for(int i=0;i<3;i++){//第二次循环进来,count应该是0啊?
  9.                                         int num = (int)(Math.random()*5)+1;
  10.                                         System.out.println(Thread.currentThread().getName()+"为数组第"+count+"个索引写入了"+num);
  11.                                          count++;//第一次count从0自增为1
  12.                                         if(count<arr.length){
  13.                                         arr[count-1] = num;//为了索引从1-1变成0
  14.                                         }else{
  15.                                                 return;
  16.                                         }
  17.                                 }
  18.                         }
  19.                 }
  20.         }
  21.      public static void main(String[] args) {
  22.                 Test21 mt = new Test21();
  23.                
  24.                 Thread t1 = new Thread(mt);
  25.                 t1.setName("线程1");
  26.                 Thread t2 = new Thread(mt);
  27.                 t2.setName("线程2");
  28.                
  29.                 t1.start();
  30.                 t2.start();
  31.         }
  32. }
复制代码

作者: 莫盛强    时间: 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