一、数组
1、定义
具有相同类型的数据集合
2、如何创建数组
(一)一维数组:
(1)情况一:数组的每个元素都确定
type[] arrName = {值1,值2,值3···};
案例:定义一个整型数组22,33,44
int[] arr = {22,33,44};
(2)情况二:以对象形式创建(每个元素都确定)
type[] arrName = new type[] {值1,值2,值3···};
(3)情况三:对存储的值不清楚,但是知道元素的个数
type[] arrName = new type[num];
int[] arr =new int[3];
访问数组中的元素:数组的下标是从0开始
数组名[下标]
例如:
String[] names = new String[]{"张三","李四","王五"};
访问:
names[1]
如果访问超过了数组范围的元素,会抛出ArrayIndexOutOfBoundsException(数组下标越界异常)
(二)二维数组:
一堆数组中的每个元素也是一个数组
(1)方法一:
java
type[][] arr = {{值1-1,值2-2···},{值1-1,值1-2···},···}
int[][] nums = {{1,2,3},{4,5,6},{7,8}};
(2)方法二:
java
type[][] arr = new type[2][];
int[][] arr1 = new int[3][];
arr[0] = new int[]{1,2}
arr[1] = new int[6]
3、如何遍历数组
在数组对象中有一个属性:arr.length,返回数组的元素个数
for循环:
java
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
foreach循环:利用迭代器实现数组的遍历
for(类型 变量 : 序列){
//循环体
}
例如:
java
String[] names = new String[]{"张三","李四","王五"};
for (String name:names) {
System.out.println(name);
}
4、数组的工具类
Arrays工具类中提供了多种操作数组的方法:
toString() //将数组转为字符串
java
System.out.println(Arrays.toString(names));
5、数组的扩缩容
(1)System
//将原数组src复制到新数组dest
public static native void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
说明:
native:本地方法,功能不是由java代码实现。
static:静态成员,可以直接通过类进行访问。
数组扩容案例:
java
//数组的扩缩容
String[] names = new String[]{"张三","李四","王五"};
String[] newNames = new String[5];
//添加新元素
newNames[3] = "人才";
newNames[4] = "计划";
System.out.println(Arrays.toString(newNames));
数组的缩容案例:
java
String[] names = new String[]{"张三","李四","王五","小樱"};
String[] newNames = new String[2];
//数组缩容
System.arraycopy(names,0,newNames,0,newNames.length );
System.out.println(Arrays.toString(newNames));
练习:利用冒泡排序算法将数组{12,4,6,2,1}按照从小到大排序。
java
int[] nums ={12,4,6,2,1};
for (int i = 1;i <= nums.length-1;i++){
for (int j = 0;j <= 5 -1-i;j++){
if (nums[j] > nums[j + 1]){
/* int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1]=temp;
*/
nums[j] = nums[j]^nums[j+1];
nums[j+1] = nums[j]^nums[j+1];
nums[j] =nums[j]^nums[j+1];
}
}
}
for (int i = 0;i<nums.length;i++){
System.out.println(nums[i]+"\t");
}
}
}
练习:杨辉三角,使用扫描器输入一个整数表示三角的层: 5
java
public class Demo02work {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数用来表示三角的层数:");
int n= sc.nextInt();
if (n<=0){
System.out.println("请重新输入一个正确的层数!");
}
int[][] a=new int[n][];
for(int i=0;i<n;i++){
a[i]=new int[i+1];
for(int j=0;j<=i;j++){
if(j==0||j==i){
a[i][j]=1;
}
else {
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
System.out.println(Arrays.toString(a[i])+"\t");
}
}
}