随机数的问题:
1、 随机整数
2、 随机实数
所谓随机数,就是局限在某个范围内的不定数据;
0-max内的整数:
Math类的random()方法用来产生一个[0,1)内的随机实数;
min-max之间的随机整数:Math.random() * (max - min) + min
调用代码:
int key = -10; modify(key); System.out.println("after method called key: " + key); |
在上面定义的方法modify中,参数x为形参变量,简称“形参”,它的生命周期只在方法体内有效,它只有在方法被调用时才会分配内存并使用;
当调用方法modify时,主方法中的局部变量key作为实际参数,简称“实参”,它的生命周期在整个主方法中可见。
当方法调用时,将实参key的值复制给形参x时,x得到了key的值;在方法体中进行各种运算,但这与实参就没有任何关系了。如果在方法体中对形参进行了修改,并不会对实参产生影响。所以方法调用之后,重新输出实参key的值,并没有变化。
再来看修改双精度数组的方法apply:
static double[] apply(double[] dd, double multiply) { if (dd == null) { return dd; } for (int i = 0; i < dd.length; i++) { dd[i] *= multiply; } return dd; } |
当参数为对象时,对于对象所在内存的操纵是通过指向它的引用来完成的,当实参值(指针,实际上是地址值)传递给形参时,是将地址值复制给了形参,此时形参和实参同时指向一份内存。所以在方法体内对形参进行修改时,相当于对实参也进行了修改;
变长参数(变长数组):这个知识点只体现在方法的定义当中。