System.out.println("输出一个1-100的随机整数:"+(int)(Math.random()*100)+1);
System.out.println("输出一个1-100的随机整数:"+((int)(Math.random()*100)+1));
为何下面的语句可以实现输出1-100随机数
而上面的输出结果却不同?

解决方案 »

  1.   

    这是运算优先级的问题,如果不带括号那么执行的顺序是先执行 (int)(Math.random()*100)得到一个int数值,这时候将字符串 "输出一个1-100的随机整数:"和int值进行 拼接,比如 int值为78,处理后变成字符串"输出一个1-100的随机整数:78",然后返回这个字符串跟1再进行拼接
    而下面这个加了括号,(int)(Math.random()*100)得到一个int数值之后率先+1操作,得到79之后再跟字符串拼接
      

  2.   

    优先级问题 从左往右 字符串+int会给Int转型为string  int+int就是加法