Java自学第三讲|数组
1.一维数组的声明方式
package zixue;
public class ZX1{
public static void main(String[] args) {
int[] a; //声明,方括号可以写到后面,像C++一样
double[] b;
Student[] c; //对象数组
}
}
class Student{
int age;
public void sayHello() {
System.out.println("Hello!" + age);
}
}
Java语言中声明数组时不能指定其长度(这里要区别于C++),同时这里也体现了Java语言的稳定性。
2.数组初始化
public class ZX1{
public static void main(String[] args) {
int[] a = new int[3];
a[0] = 3;a[1] = 2;a[2] = 3;
Student[] b = new Student[3];
b[0] = new Student(1);
b[1] = new Student(2);
b[2] = new Student(3);
}
}
class Student{
int age;
public Student(int n) {
age = n;
}
}
也可以使用如下方式:
package zixue;
public class ZX1{
public static void main(String[] args) {
int[] a = {3,2,1};
int[] b = new int[] {1,2,3};
Student[] s = {
new Student(1),
new Student(2),
new Student(3)
};
}
}
class Student{
int age;
public Student(int n) {
age = n;
}
}
数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化
数值类型是0,引用类型是null
3.数组元素的引用
public class ZX1{
public static void main(String[] args) {
int[] a = {3,2,1};
System.out.println(a[0]);
int i = 1;
System.out.println(a[i]);
System.out.println(a[i * 2]);
}
}
可以是整型常量或整型表达式.
每个数组都有一个属性length指明它的长度
public class ZX1{
public static void main(String[] args) {
int[] a = {1,5,3};
for(int i = 0;i < a.length;++i)
System.out.println(a[i]);
}
}
4.增强的for语句
public class ZX1{
public static void main(String[] args) {
int[] a = {1,5,3};
for(int i : a)
System.out.println(i);
}
}
这种方式类似于C++STL中的迭代器,但是这种语句是只读类型的遍历.
5.复制数组
public class ZX1{
public static void main(String[] args) {
int[] a = {1,5,3};
int[] b = {2,3,4,5,6};
System.arraycopy(a, 0, b, 0, a.length);
for(int i : b)
System.out.println(i);
}
}
System.arraycopy(a,0,b,0,a.length)表示将数组a从0(第一个)开始的数赋值给数组b从0(第二个)开始的位置,赋值的个数是a.length,此程序执行结果是:
1
5
3
5
6
6.多维数组
public class ZX1{
public static void main(String[] args) {
int[][] a = new int[3][];
a[0] = new int[2];
a[1] = new int[3];
a[2] = new int[1];
}
}
这里我认为可以和C++中的vector进行类比,数组的数组
多维数组的声明和初始化应按从高维到低维的顺序进行
Java自学第三讲部分总结。
内容依赖于北京大学唐大仕老师的mooc。