#数组复习
(内容借鉴于 公开课→清华大学java自主学习教程 https://www.bilibili.com/video/av36737688?p=16)
数组的概念
·数组是由同一类型的对象或者基本数据组成,并封装在同一标识符(数组名称)下。
数组是对象
·动态初始化
·可以赋值给Object类型的变量
·在数组中可以调用类Object的所有方法
·每个数组都有一个由Public final修饰的成员变量length,
即数组含有元素的个数(length可以是正数或零)
数组元素
·数组中的变量被称作数组的元素
·元素没有名字,通过数组名字和非负整数下标值引用数组元素
数组的创建和使用
·数组的声明------(就像还没你的时候,你父母就给你起好了名字“小明”,此时都知道小明这个名字,但是户口簿上还没有你的任何信息)
·声明数组时不需要指明数组元素的个数,也不为数组元素分配空间
·不能直接使用,必须经过初始化分配内存后才能使用
eg: Type[] arrayName
int[] intArray;
String[] stringArray;
Type arrayName[]
int intArray[];
String stringArray[];
·数组的创建------(此时的你刚出生,在户口簿上有了你的信息:性别(变量类型),年龄(数组元素个数)等等)
·用关键字new构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量
·基本类型数组的每个元素都是一个基本类型的变量。引用类型数组的每个元素都是对象的引用
eg: arrayName=new Type[componets number];
int[] a; a=new int[10];
String[] b; b=new String[5];
先声明在创建分两个代码很麻烦,所以可以一步到位用下面的语句代替
int[]a=new int[10];
String[]b=new String[5];
有时候同类型的数组需要多个,可以在一条声名语句中创建多个数组
String[] s1=new String[3],s2=new String[4];
·数组元素的初始化------(户口簿上有了性别,年龄,但是具体的值还需要填写:男,1岁)
·声明数组时,给出了数组的初始值,程序便会利用数组初始值创建数组并对它的各个元素进行初始化
int a[]={11,22,33,44,55};
·创建数组时,如果没有指定初始值,数组便被赋予默认值作为初始值
·基本类型数据,默认初始值为0;
·boolean类型数据,默认值为false;
·引用类型元素的默认值为null。
·使用数组(有了各种信息,你的身份证就可以使用啦)
·引用数组的一个元素:
arrayName[index] (比如上面创建了一个数组a 现在要用数组a里面的第一个元素:a[0])
·数组的下标即index必须时int,short,byte或者char。char作为下标一般转为int型来使用。
·数组下标从零开始计数。
·元素的个数 即 数组的长度 可以通过arrayName.length得到。(拿数组a来举例。得到数组a的长度:a.length)
·元素下标最大值为length-1,如果超过最大值,会产生数组越界异常(ArrayIndexOutOfBoundsException)
----------------------–
数组有关知识点
·数组名是一个引用(比如说复制一个已有的数组,这样表面上有两个相同元素的数组,但是他们都类似于c语言的指针,数组元素在内存空间里只存在一个数组的元素)
eg:
public class Test{
public static void main(String[] args){
int[]a1={1,2,3,4,5};
int[]a2;
a2=a1;
for(int i=0;i<a2.length;i++)
a2[i]++;
for(int i=0;i<a1.length;i++)
System.out.println(“a1[”+i+"]="+a1[i]);
}
}
运行结果:
a1[0]=2
a1[1]=3
a1[2]=4
a1[3]=5
a1[4]=6
·字符串引用构成的数组,每个元素都是引用
eg:
public class Test{
public static void main(String[] args){
String[] anArray={“String One”,“String Two”,“String Three”};
for(int i=0;i<anArray.length;i++){
System.out.println(anArray[i].toLowerCase());
}
}
}
运行结果:string one
string two
string three
toLowerCase()是转化为小写的方法。
·复制数组或者数组的部分元素
arraycopy()方法可以用来复制数组的全部元素或者部分元素。
eg:
public class Test{
public static void main(String[] args){
char[]copyFrom= {‘a’,‘b’,‘d’,‘g’,‘e’,‘h’,‘y’,‘i’,‘r’};
char[]copyTo=new char[5];
System.arraycopy(copyFrom,1,copyTo,0,5);
System.out.println(new String(copyTo));
}
}
运行结果:bdgeh
多维数组(和一维数组差不多)
·二维数组的声明和构造
int[][]myArray;
myArray是一个指向二维整数数组的引用。初始值为null。
int[][]myArray=new int[3][5];
定义引用时,同时构造数组并初始化引用,这个数组所有元素的初始值为0.
int[][]myArray={{4,5,6},{1,2,3},{7,8,9}};
定义引用,构造函数,初始化数组元素。
二维数组的长度指的是数组的行数,而每一行的长度是可以不一样的。