数组的创建
静态创建数组
在Java中,可以通过以下方式静态创建数组:
数据类型[] 数组名 = { 元素1,元素2,元素3,… };
int[] arr = {12, 24, 36};
int[] arr = new int[]{12, 24, 36};
int age[] = {12, 24, 36};
System.out.println(arr.length); // 使用length方法获取数组长度
动态创建数组
动态创建数组的语法如下:
数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[3]; // 默认元素值为0
Math.random生成随机数
Math.random() 方法会生成一个 [0, 1) 之间的浮点数。通过将其乘以数组长度并强制转换为整数,可以生成随机的数组下标:
public static void test1() {
String[] heroes = {
"宋江", "卢俊义", "吴用", "公孙胜", "关胜",
"林冲", "秦明", "呼延灼", "花荣", "柴进",
"李应", "朱仝", "鲁智深", "武松", "董平"
};
int index = (int)(Math.random() * heroes.length);
System.out.println(heroes[index]);
}
二维数组
静态声明
二维数组的静态声明方式如下:
数据类型[][] 数组名 = { {元素1,元素2,元素3}, {元素4,元素5}, {元素6} };
数据类型 数组名[][] = { {元素1,元素2,元素3}, {元素4,元素5}, {元素6} };
数据类型[][] 数组名 = new 数据类型[][] { {元素1,元素2,元素3}, {元素4,元素5}, {元素6} };
动态声明
动态声明二维数组时,必须指定行数,列数可以省略:
数据类型[][] 数组名 = new 数据类型[i][j];
其中,i 表示行数,j 表示列数。
this关键字
在Java中,this 关键字用于引用当前对象,常用于解决命名冲突问题。
构造器
当类中没有显式定义构造器时,系统会默认生成一个无参构造器。通常,一个类至少应包含两个构造器:一个无参构造器和一个全参构造器。
构造器的语法如下:
访问修饰符 类名([参数列表]) {
// 构造器体
}
封装
Java通过访问修饰符实现封装:
public:公开的,外部任意位置都可以访问。private:私有的,只有当前类的内部可以访问,外部无法访问。- 默认(没有修饰符):类的内部和同包下的类可以访问,其他包的类不能访问。
在没有封装的情况下,直接对对象赋值可能导致数据的不合法或不安全。通过封装,我们可以通过特定的接口(如 get() 和 set() 方法)合法、安全地访问对象。
例如,判断成绩的合法性(60-100之间):
private Integer score;
public void setScore(Integer score) {
if (score < 0 || score > 100) {
System.err.println("成绩有误请重新输入");
} else {
this.score = score; // 谁调用这个方法,谁就是当前的实体类
System.out.println("设置成功" + this.score);
}
}
public Integer getScore() {
return score;
}
Student student = new Student();
student.setScore(-10); // 成绩有误请重新输入
student.setScore(100); // 设置成功100
总结
- 数组的创建:Java支持静态和动态两种方式创建数组。静态创建适用于已知元素的情况,动态创建则适用于需要运行时确定数组大小的情况。
- 随机数生成:通过
Math.random()方法可以生成随机数,结合数组长度可以随机访问数组元素。 - 二维数组:二维数组可以通过静态或动态方式声明,行数必须指定,列数可以省略。
- this关键字:用于引用当前对象,解决命名冲突。
- 构造器:类中至少应包含无参构造器和全参构造器,构造器用于初始化对象。
- 封装:通过访问修饰符控制数据的访问权限,确保数据的合法性和安全性。封装通过
get()和set()方法提供对数据的访问和修改。
通过合理使用数组、随机数、二维数组、this 关键字、构造器和封装,可以编写出结构清晰、安全性高的Java程序。