目录
面向对象高级篇
数组
一维数组
语法:
静态初始化:
访问数组的某一个元素:
判断相同和打印数组:
多维数组
语法:
遍历多维数组:
可变长参数
数组是相同数据类型的有序集合,数组可以表示任何相同类型的一组内容(包括引用类型和基本类型)其中存放的每一个数据称为数组的一个元素。
public static void main(String[] args) {
int[] array; //类型[]表示这是个数组类型
}
数组类型比较特殊,它本身也是类,但是编程不可见(底层C++编写,在运行时动态创建)即使是基本类型的数组,也是以对象的形式存在的,并不是基本数据类型。所以我们要创建一个数组,同样需要使用new关键字:
public static void main(String[] args) {
int[] array=new int[10]; //在创建数组时,需要指定数组长度
Object obj =array; //因为同样是类,肯定是继承自Object的,所以可以直接向上转型
}
同样可以使用Object类的各种用法。
public static void main(String[] args) {
int[] array=new int[]{1,2,3,4,5};
//缩写int[] array={1,2,3,4,5};
System.out.println(array.length);
}
数组长度不能为负数。
length是在一开始就确定的,而且是final类型的,不允许修改。
创建出来的数组,每个位置上都有默认值,如果是引用类型就是null,如果是基本数据类型就是0,或者是false,跟对象成员变量的默认值是一样的。
public static void main(String[] args) {
int[] array=new int[]{1,2,3,4,5};
System.out.println(array[1]); //变量名[下标]
}
//输出2
也可以通过这种方式为数组的元素赋值或修改值:
public static void main(String[] args) {
int[] array=new int[]{1,2,3,4,5};
array[0]=888;
System.out.println(array[0]);
}
数组的下标是从0开始的,不是从1开始。第一个元素下标是0,访问元素不能写成负数或超出范围,否则会出现异常。
public static void main(String[] args) {
int[] a={1,2,3,4,5};
int[] b={1,2,3,4,5};
System.out.println(a.equals(b)); //输出false
System.out.println(equals(a,b)); //输出true
}
private static boolean equals(int[]a,int[]b){
for (int i = 0; i < a.length; i++)
if(a[i]!=b[i]) return false;
return true;
}
打印整个数组中的元素也只能一个一个访问:
public static void main(String[] args) {
int[] a={1,2,3,4,5};
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
//简写: for (int i :a){
// System.out.print(i);
// }
}
//输出1 2 3 4 5
对于基本类型的数组来说不支持自动装箱和拆箱。
由于基本数据类型和引用类型不同,所以说int类型的数组不能被Object类型的数组变量接收。引用类型的话是可以的,且支持向上转型和向下转型。
引用类型用final就是不能改变它引用的对象,数组里面的值可以修改:
public static void main(String[] args) {
final int[] a={1,2,3,4,5}; //加final里面的值可以改
a[0]=100;
System.out.println(a[0]);
}
public static void main(String[] args) {
int[][] a={{1,2},{3,4},{5,6}};
System.out.println(a[0][1]);
}
public static void main(String[] args) {
int[][] arr =new int[][]{{1,2,3,4},
{5,6,7,8}};
System.out.println(arr[1][1]);
}
//输出6
可以引用或修改某一个数组:
public static void main(String[] args) {
int[][] arr =new int[][]{{1,2,3,4},
{5,6,7,8}};
int[]a=arr[0]; //引用
arr[0]=new int[]{0,0,0,0}; //修改
System.out.println(arr[0][1]);
}
需要多次嵌套循环:
public static void main(String[] args) {
int[][] arr =new int[][]{{1,2,3,4,0,3},
{5,6,7,8}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
数组的延伸应用。
我们在使用时,可以传入0~n个对应的实参:
public static void main(String[] args) {
test("1","2","3");
}
private static void test(String... str){
System.out.println(str[0]);
}
//输出1
private static void test(String... str){
for(String s:str){
System.out.println(s);
}
}
//输出
1
2
3
如果同时存在其他参数,那么可变长参数只能放在最后。且可变长参数只能有一个。