数组加强1
数组概念
数组是存储同一种数据类型多个元素的集合。也可以看成一个容器。
数组即可以存储基本数据类型,也可以存储引用数据类型
定义格式
什么是数组初始化
java中的必须先初始化,然后才能使用
所谓的初始化,就是为数组中的数组元素分配内存空间。并为每个数组元素赋值
初始化分类;
a;动态初始化;指定长度,由系统给出初始值
b;静态初始化;给出初始化值,由系统决定长度
注意事项;这两种方式只能使用一种,不能进行动静结合
动态初始化的格式与获取
数据类型[] 数组名 = new 数据类型[数据长度]
数据长度其实就是数组中元素的个数
在数组初始化时,会为每一个元素索引(角标)这个索引从0开始。通过索引取出某个元素。也是通过索引会给元素重新赋值。
例: int num = arr[1];
数组的常见操作
1;数组元素的遍历
2;数组常见的角标越界异常
3;数组元素的反向遍历
4;获取数组元素的最大值最先值
5;数组元素的反转
1;数组遍历
使用for循环来遍历数组
public class Outer {
public static void main(String[] args) {
int [] arr ={10,20,30,40,50};
for(int i =0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
反向遍历
public class Outer {
public static void main(String[] args) {
int [] arr ={10,20,30,40,50};
for(int i = arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
}
}
2;获取数组最值
获取数组中的最大值或者最小值
public class Outer {
public static void main(String[] args) {
int [] arr ={10,20,36,21,67,40,50};
//获取数组中的最值
//定义一个参照值
int max=arr[0];
for(int i = 1;i< arr.length;i++){
if(arr[i]>max){
max = arr[i];
}
}
System.out.println("数组最值"+max);
}
}
3;反转数组元素
public class Outer {
public static void main(String[] args) {
int[] arr = {10, 20, 36, 21, 67, 40, 50};
//反转数组中的元素
// 思路;首尾元素互换
for (int i=0;i< arr.length/2;i++){
int t =arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i] =t;
}
}
}
4;二维数组
(1)二维数组的概述
:二维数组中的每一个元素为一个一维数组
(2)二维数组的定义格式
: 数据类型[][]变量名 = new 数据类型[][];
:m表示这个二维数组中有多少个一维数组
:n表示每一个一维数组的元素个数
public class Outer {
public static void main(String[] args) {
//定义方式一。动态定义
int[][] arr =new int[3][2] ;
//定义方式二。静态定义
int[][] arr1 ={{20,62,4},{80,30,95},{10,10}};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
//给二维数组里面的每一个元素赋值
arr[0] = new int[2];
arr[1] = new int[2];
arr[2] = new int[2];
}
}
(3)二维数组的遍历
//定义方式二。静态定义
int[][] arr1 ={{20,62,4},{80,30,95},{10,10}};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
//给二维数组里面的每一个元素赋值
arr[0] = new int[2];
arr[1] = new int[2];
arr[2] = new int[2];
//遍历 双重for循环
for (int i = 0; i < arr1.length; i++) {
// System.out.println(arr[i]);
for (int j = 0; j < arr1[i].length; j++) {
}
}
(4)二维数组的联系
求和
int[][] arr ={{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
//定义一个变量用来接受结果
int sum =0;
//遍历 双重for循环
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum+=arr[i][j];
}
杨辉三角
import java.util.Scanner;
public class Outer {
public static void main(String[] args) {
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("清输入行数");
int n =sc.nextInt();
//定义一个二维数组
int[][] arr =new int[n][n];
//把每一行的第一列跟最后一列设置为1
for (int i = 0; i < arr.length; i++) {
arr[i][0]=1;
arr[i][i]=1;
}
//添加中间量
for (int i = 2; i < arr.length; i++) {
for (int j = 1; j <= i; j++) {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
//遍历二维数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
(5)数组查找与二等分查找
1;遍历数组查找
public class Outer {
public static void main(String[] args) {
//定义一个二维数组
int[]arr ={12,23,41,12,45,64,20,35,24};
//根据元素查找该元素在数组中的第一次出现的索引
int index =getIndexBYELE(arr,20);
System.out.println("该元素在数组中第一次出现的索引时"+index);
}
private static int getIndexBYELE(int[] arr,int i) {
//遍历数组
for (int i1 = 0; i1 < arr.length; i1++) {
if(i==arr[i1]){
return i1;
}
}
return -1;//没有找到返回-1
}
}
2;二等分查找
二分查找前提时数组中元素必须有序
import java.util.Scanner;
public class Outer {
public static void main(String[] args) {
//定义一个二维数组
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80,90 };
int index =getIndexBELE(arr,10);
System.out.println(index);
}
private static int getIndexBELE(int[] arr, int i) {
//定义最小索引,中间索引,最大索引
int minIndex = 0;
int maxIndex = arr.length-1;
int centerIndex = (minIndex + maxIndex) / 2;
//如果这个元素等于中间索引对应的元素就直接返回中间索引
while (minIndex <= maxIndex) {
if (i == arr[centerIndex]) {
return centerIndex;
//如果大于中间索引,就更改最小索引
} else if (i > arr[centerIndex]) {
minIndex = centerIndex + 1;
//如果小于中间索引,更改最大索引
} else if (i < arr[centerIndex]) {
maxIndex = centerIndex - 1;
}
//重新计算中间索引
centerIndex = (minIndex + maxIndex) / 2;
}
return -1;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现