Random
1.使用random生成随机数需要导包 import java.util.Random;
//导包
import java.util.Random;
Random r = new Random();
int num = r.nextInt(bound:)
代码中的nextInt就是随机生成一个整型数,括号中的bound就是生成随机数的范围。如果只写一个数字,则为[0,n),如果写两个数字,则为[m,n)
强制类型转换
Java中的强制类型转换是 char c = (char) (97); 不同于c语言中的 char c = char(97);
抽奖池代码优化
比较简单的想的是如果抽到了一个奖金,那么就把该奖金对应的索引进行标记,如果再次抽到这个奖金对应的索引,那么就重新生成随机索引,直至所有奖金对应的索引都标记完为止;
这种方法的问题是抽取的效率有待提高,但无可避免会出现无效随机索引的问题,如果可以在一开始将所有的奖金原本顺序对应的索引值打乱,打乱后进行遍历,那么就可以避免出现无效随机索引的问题。具体实现就是在数组遍历中每次生成一个随机值(小于数组长度),然后将遍历的 i 对应的奖金与随机值对应的奖金进行互换,从而实现打乱奖金顺序的效果,随后进行遍历即可。
二维数组
1.二维数组的静态初始化
// 二维数组的静态初始化
// 格式:数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2},{元素1,元素2}}
//建议每一个一维数组单独一行,这样便于阅读
int[][] arr = new int[][]{
{1,2,3,4},
{5,6,7,8}
};
//简化格式:数据类型[][] 数组名 = {{元素1,元素2},{元素1,元素2}}
int[][] arr = {
{1,2,3,4},
{5,6,7,8}
};
/*int arr[][] = [][]{
{1,2,3,4},
{5,6,7,8}
};
也是可以的,但是前者符合阿里巴巴编码规范,后者不符合阿里巴巴编码规范*/
2.二维数组的动态初始化
//二维数组的动态初始化
//格式:数据类型[][] 数组名 = new 数据类型[m][n];
//m表示这个二维数组,可以存放多少个一维数组,n表示每一个一维数组,可以存放多少个元素
int[][] arr = new int[2][3];
3.二维数组的内存图