今天也要好好学Java!!
数组
数组是相同类型数据的有序集合。其中,每一个数据称作一个元素,每个元素可以通过一个索引,来访问他们。数组的四个基本特点:
- 长度是确定的。数组一旦被创建,他的大小就不可以改变。
- 其元素的类型必须是相同类型,不允许出现混合类型。
- 数组类型可以使任何数据类型,包括基本类型和引用类型,
- 数组变量属于引用类型,数组也是对象,数组中的元素相当于对象的属性。
创建数组和初始化
数组的声明方式
type[] arr_name;//方式一
type arr_name[];//方式二
/*声明时别没有实例化对象,只有在实例化数组对象时,jvm才分配空间,这是才与长度有关。
*声明一个数组的时候并没有数组真正被创建。
*构造一个数组,必须指定长度*/
package array;
//数组的声明和创建
public class Test01 {
public static void main(String[] args) {
int[] s;// 声明
s = new int[10];// 创建
System.out.println(s[0]);
System.out.println(s[1]);
for (int i = 0; i < 10; i++) {
s[i] = i + 1;
System.out.println(s[i]);
}
Student st[] = new Student[10];
for (int j = 0; j < 10; j++) {
st[j] = new Student(j+1, (int) (Math.random() * 20));
System.out.println(st[j].id + " " + st[j].age);
}
}
}
class Student {
int id;
int age;
public Student(int id, int age) {
this.id = id;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
初始化
- 数组的静态初始化
除了用new关键字来产生数组以外,还可以直接定义数组的同时就为数组元素分配空间并赋值。
- 数组的动态初始化
数组定义与为数组元素分配空间并赋值的操作分开进行
- 数组的默认初始化
数组是对象,它的元素相当于对象的属性,每个元素也按照属性的方式被默认初始化。
package array;
//测试数组的三种初始化方式
public class Test02 {
public static void main(String[] args) {
int[] a = {10,20,30,40};
Student st[] = {new Student(0, 0),
new Student(1, 0),
new Student(2, 0)};
System.out.println(a[1]);
System.out.println(st[2].getId());//静态初始化
int[] s;
s = new int[10];
for (int i = 0; i < 10; i++) {
s[i] = i + 1;
System.out.println(s[i]);
}//动态初始化
int a1[]=new int[2];
System.out.println(a1[0]);//默认初始化
}
}
遍历、拷贝
遍历指的就是“通过循环遍历数组的所有元素”
package array;
//测试遍历
public class Test03 {
public static void main(String[] args) {
String[] cities = {"北京","上海","广州","深圳"};
for(int i=0;i<cities.length;i++) {
System.out.println(cities[i]);
}
for (String t : cities) {
System.out.println(t);
}//for each增强for只用于简单遍历
}
}
拷贝指的是将某个数组的内容拷贝到另一个数组中
package array;
//测试拷贝
public class Test04 {
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9,10};
int[] c = new int[6];
System.arraycopy(a, 0, c, 0, c.length);
for(int i=0;i<c.length;i++) {
System.out.print(c[i]+" ");
}
}
}
多维数组
多维数组可以看成以数组为元素的数组。
package array;
import java.util.Arrays;
//测试多维数组的初始化
public class Test06 {
public static void main(String[] args){
int[][] a = new int[3][];
a[0] = new int[2];
a[1] = new int[2];
a[2] = new int[2];
a[0][0] =100;
a[0][1] =101;
int[][] b = {
{1,2,3},{3,4},{3,4,5,6}
};
int[][] c = new int[3][];
c[0] = new int[]{1,2};
c[1] = new int[]{12,3};
c[2] = new int[]{3,4,5};
System.out.println(Arrays.toString(a[0]));
System.out.println(Arrays.toString(b[1]));
System.out.println(Arrays.toString(c[2]));
}
}
package array;
import java.util.Arrays;
//测试object二维数组存储表格数据
public class Test07 {
public static void main(String[] args) {
Object[] o1= {1001,"wyh","123"};
Object[] o2 = {1002,"wyh","456"};
Object[] o3 = {1003,"wyh","789"};
Object[][] emps = new Object[3][];
emps[0] = o1;
emps[1] = o2;
emps[2] = o3;
System.out.println(Arrays.toString(emps[0]));
System.out.println(Arrays.toString(emps[1]));
System.out.println(Arrays.toString(emps[2]));
for(int i = 0; i < emps.length ;i++) {
for(int j=0;j<emps[i].length;j++) {
System.out.print(emps[i][j]+" ");
}
System.out.println();
}
}
}
package array;
import java.util.Arrays;
//使用javabean和数组保存表格数据
public class Test08 {
public static void main(String[] args) {
Emp[] emps = { new Emp(1001, "wyh", "123"), new Emp(1002, "wyh", "456"), new Emp(1003, "wyh", "789") };
for (Emp emp : emps) {
System.out.println(emp.toString());
}
}
}
class Emp {
private int id;
private String name;
private String job;
public Emp(int id, String name, String job) {
super();
this.id = id;
this.name = name;
this.job = job;
}
@Override
public String toString(){
return
"Emp{"+"id="+id+",name='"+name+"\'"+",job='"+job+"\'"+"}";
}
}