数组的定义
java中提供的数组是用来存储固定大小的同类型元素。
数组是多个相同类型数据按照一定顺序排列集合,并使用一个名字命名,通过编号的方式对这些数据进行统一的管理。
数组的特点
数组本身是引用类型数据,但数组中的元素可以是任何数据类型。
创建数组对象会在内存总开辟一整块连续的空间,占据空间的大小取决与数组的长度和数组中元素的类型。
数组中的元素在内存中是一次紧密排序的有序的
数组一旦初始化完成,其长度就是确定的,而数组的长度一旦确定就不能修改
可以直接通过小标的方式调用指定位置的元素-数组名中引用的是这块连续空间的首地址
数组的索引是从0开始的
数组的声明
一维数组声明
格式:
//推荐
元素的数据类型[] 一维数组名称;
不推荐 这是C++的写法
元素的数据类型 一维数组名[];
举例:
int[] arr;//java
int arr1[];//c/c++
String[] arr3;//java
二维数组声明
格式:
元素的数据类型[] [] 二维数组的名称;
//不推荐 这是C++的写法
举例:
Int[] []arr;
int arr1[][];
package chaper2; public class Seek { public static void mian(String args[]) { int []arr; int [][]arr1; String []str; } }
数组初始化
1:静态初始化:数组变量的初始化和数组元素的赋值操作同时进行称为静态初始化,本质是用静态数据为数组初始化,此时数组的长度有静态数据的个数决定。
举例:
int[] arr=new int[]{1,23,4,3};
//或者
int []arr;
arr=new int[]{1,23,4,5};
2:动态初始化:数组变量的初始化和数组元素的赋值操作分开进行称为动态初始化。动态初始化中只确定了元素的个数,而元素值此时只是默认值,真正的数据需要后面单独一个个赋值。
注:数组长度一旦指定不可更改。
举例: int[] arr=new int[5];
遍历数组
遍历输出一维数组
1:使用for循环遍历数组中的每个索引
int []arr={21,2,5,3,7};
for(int i=0;i<arr.length;i++){//获取数组长度 数组名.length
System.out.println(arr[i]);
}
2:使用增强for循环遍历数组
int []arr={23,23,4,3,26};
for(int obj:arr){
Sysetm.out.println(obj);
}
遍历二维数组
使用两层for循环遍历
package chaper2; public class Seek { public static void main(String args[]) { int [][]arr= new int [5][5]; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } } }
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
给数组赋值:通过fill方法
对数组排序,通过sort方法,升序。
实例:
Array.sort(数组名);
Arrays.fill(数组名,数值);
package chaper2; import java.util.Arrays; public class Seek { public static void main(String args[]) { char []a=new char[5]; Arrays.fill(a,'s'); for(int i=0;i<5;i++) { System.out.println(a[i]); } int arr[]=new int[] {2,3,1}; Arrays.sort(arr);//升序 for(int i=0;i<3;i++) { System.out.print(arr[i]); } } }
例题实战
题目:给定一个数组,请采用如下代码定义:
int data[200];
for(i=0;i<200;i++) data[i]=4*i+6;
先给定某个数(在data数组中)请你求出它在数组中的位置。
示例1:输入262 输出64
示例2:输入438 输出108
package chaper2; import java.util.Scanner; /* * 题目:给定一个数组,请采用如下代码定义: int data[200]; for(i=0;i<200;i++) data[i]=4*i+6; 先给定某个数(在data数组中)请你求出它在数组中的位置。 示例1:输入262 输出64 示例2:输入438 输出108 */ public class Abide { public static void main(String args[]) { int []data=new int[200]; //数组的初始化 for(int i=0;i<200;i++) { data[i]=4*i+6; }//通过下表遍历数组中的每个元素,为每个数设置值 Scanner scanner =new Scanner(System.in); //控制台 int s=scanner.nextInt(); //接受控制台上传来的整数型数据输入 for(int i=0;i<200;i++) { if(data[i]==s) { System.out.println(i); break; }//如果找到该数字,结束循环 }//通过foe循环遍历数组,寻找控制台上输入的数字在数组中的地址 } }