1.数组定义
定义数组的语法
数据类型 [] 数组变量名 = new 数据类型[长度]; //定义一个有长度的数组
数据类型 [] 数组变量名 = new 数据类型[]{元素1,元素2,…}; //声明数组并赋值
数据类型 [] 数组变量名 = {元素1,元素2,…}; //声明数组并赋值
**
数组遍历
**
1.用普通for循环和增强for循环遍历数组
一维数组
//用for循环遍历
for(int i=0;i<nums.length;i++){ //循环3要素
System.out.println(nums[i]); //按照数组的录入顺序输出数组每个元素
}
System.out.println(“用增强for循环遍历数组”);
//增强for循环 forEach
for(int num:nums){
System.out.print(num+" ");
}
1.求最大值 最小值 求和 平均值
对数组进行
求和
求最大值
求最小值
平均值
/
public class Demo02 {
public static void main(String[] args) {
int [] arrs = {12,22,44,89,-7};
int sum =0;
int max = 0;
int min = 89; //最小值不能比数组里的最大值小
double avg;
//遍历数组
for(int i=0;i<arrs.length;i++){
System.out.print(arrs[i]+" ");
// 求和
sum += arrs[i];
//最大值
if(arrs[i] > max){ //如果有个元素比最大值大
max = arrs[i]; //把这个元素赋值给最大值这个变量
}
//最小值
if(arrs[i] < min){ //如果有个元素比最小值小
min = arrs[i]; //把这个元素值给最小值
}
}
avg = sum/arrs.length;
System.out.println(“数组的和是:”+sum);
System.out.println(“最大值是:”+max);
System.out.println(“最小值是:”+min);
System.out.println(“平均值是:”+avg);
}
二维数组
int [][] arrays = new int[][]{{1,2,3},{2,3,4,5}} //2行2列的一个二维数组
int [][] arrays2 = {{1,2,3,4,5},{2,3},{1,4,5}}; //3行5列的一个二维数组
3这个元素的位置:arrays2[1][1]
方法:
arrays.sort 是对数组的排序(从小到大)
1.Arrays.binarySerch 二分查找,找到则定位元素下标
2.Arrays.toString 数组的打印3.Arrays.toString 数组的打印
3.int a[] = {1,3,5,2,9};
String aString = Arrays.toString(a);//String前面的a代表数组,后面也是
System.out.println(aString);
4.Arrays.fill 数组的填充
int[] a = new int[3];
Arrays.fill(a, 3);//将所有的都填充为3
System.out.println(Arrays.toString(a));
5.Arrays.equals 判断两个数组大小是否相等
int a[] = {1,3,4};
int b[] = {2,4,8,9};
System.out.println(Arrays.equals(a, b));//结果则是两个数组大小不同
6.Arrays.asList(a) 查看数组中的特定值
int b[] = {2,4,8,9};
System.out.println(Arrays.asList(b).contains(9));//结果只能为true或者false
7.Arrays.copyOf 数组的拷贝
int b[] = {2,4,8,9};
Arrays.copyOf(b, 6);//6为数组的长度
System.out.println(Arrays.toString(b));
数组的常用查找方法
*** 普通查找*
- /
public class NomalSelect {
public static void main(String[] args) {
int []nums = {2,3,4,5,6};
/ int num =5;
for(int i=0;i<nums.length;i++){
if(nums[i] == num){ //传入的num和数组元素相等
System.out.println(“元素的下标是:”+i);
}else{
System.out.println(“这个元素不存在!”);
}
}*/
int num = 6;
int result = putongSelect(nums,num);
System.out.println(“该元素的的索引是:”+result);
}
//int返回值类型 带参方法
public static int putongSelect(int []nums,int num){
for(int i=0;i<nums.length;i++){
if(nums[i] == num){
return i; //返回对应元素的索引
}
}
return -1; //没有这个元素就返回-1
}
二分查找
前提是数组是升序不重复的 - min
- max
- mid
- /
public class HalfSearch {
public static void main(String[] args) {
int [] nums = {2,3,4,5,6};
int result = halfSeac(nums,nums.length,5);
System.out.println(“元素的索引是:”+result);
//Arrays工具类的 binarySearch 就是二分查找
System.out.println(Arrays.binarySearch(nums,3));
}
//找到就返回这个元素
/ - 参数分别是 数组 数组长度 要查找的数
- */
public static int halfSeac(int []arrs,int n,int key){
int min = 0; //最小值
int max = n-1; //最大值
int mid ;
while(min <= max){ //最小值小于 等于最大值
mid = (min+max)/2; //求出中间值
if(arrs[mid] == key){ //如果比较的数是中间值
return mid; //key 就作为中间值 返回mid
}
if(arrs[mid] > key){ //如果中间值比你传的数大
max = mid-1; // 往左边移动
}
if(arrs[mid] < key){ //如果中间值比你传的数小
min = mid+1; //往右边移动
}
}
return -1; //不存在这个数
.冒泡排序 (升序降序)
冒泡排序 - 升序 降序
- 第一次比较时候总能把最大/最小的元素值 给找出来 置最后
- */
public class Maopao {
public static void main(String[] args) {
//声明数组
int [] arrs = {-8,7,45,2,4};
//for循环
for(int i=0;i<arrs.length-1;i++){ //外层 行
for(int j=0;j<arrs.length-i-1;j++){ //内层 列
//设置一个比较条件
if(arrs[j] > arrs[j+1]){ //升序
//交换
int temp = arrs[j+1];
arrs[j+1] = arrs[j];
arrs[j] = temp;
}
}
}
//遍历输出排序后的数组元素
for(int num:arrs){
System.out.println(“排序完后的数组元素:”+num);
.逆序排列
逆序排序数组 - /
public class Nixu {
public static void main(String[] args) {
int nums [] = {-7,23,4,6,6,7};
//循环3要素
/ - 初始值:int start=0,end =nums.length-1;
- 循环条件:start<end;
- 循环操作:start++,end –
- for(int start=0,end =nums.length-1;start<end;start++,end–){
//交换元素值
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
}
//遍历输出
for (int num:nums){
System.out.print(num+" ");
}