java 数组看这一篇文章就够了

news/2024/11/24 13:45:47/

第一章 数组概述

  • 数组介绍
1
2
3
4
1. 数组是多个相同类型数据的组合
2. 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
3. 数组属引用类型,数组中的每个元素相当于该对象的成员变量
4. 数组中的数据是有序的,可以通过序号(索引或者下标)获取,索引从0开始
  • 数组分类
1
2
3
4
一维数组
二维数组
...
多维数组

第二章 一维数组

第1节 声明和初始化

  • 一维数组的声明
1
2
3
声明方式: type[] var; type var[];  中括号表示的是声明一个数组,type表示的是数组中存储数据的类型
举例:    int[] arr; int arr[];String[] strs; String strs[];
注意:    类型可以基本类型也可以是引用类型
  • 一维数组的初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
1. 动态初始化: 数组声明且为数组元素分配空间与赋值的操作分开进行int[] arr = new int[3];    //创建数组对象使用new关键字,并且初始化数组长度arr[0] = 3; //数组是一个集合,里面存储的数据都有索引或者叫做下标arr[1] = 9;  //使用下标给数组赋值arr[2] = 8; //索引从0开始2. 静态初始化: 在定义数组的同时就为数组元素分配空间并赋值int a[] = new int[]{ 3, 9, 8}; //在初始化数组的时候直接赋值,不设置长度int[] a = {3,9,8};//在初始化数组的时候直接赋值,省略new3. 数组长度的获取int arr={1,2,3};int len = arr.length;

第2节 练习

  • 案例1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//求数据元素的最大值
public static void main(String[] args) {int[] arr={2,12,14,13,15,55,66,22,33};int max=arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i]>max){//交换max=arr[i];}}System.out.println("最大值为:"+max);
}
//求数据元素的最小值
public static void main(String[] args) {int[] arr={2,12,14,13,15,55,66,22,33};int min=arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i]<min){//交换min=arr[i];}}System.out.println("最小值为:"+min);
}
//求总和和平均值
public static void main(String[] args) {int[] arr={2,12,14,13,15,55,66,22,33};int sum=0;//总和for (int i = 0; i < arr.length; i++) {sum+=arr[i];}System.out.println("总和:"+sum);System.out.println("平均值:"+sum/arr.length);
}
  • 案例2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//数组复制
public static void main(String[] args) {int[] arr={2,12,14,13,15,55,66,22,33};int[] arr1 = new int[arr.length];for (int i = 0; i < arr.length; i++) {arr1[i]=arr[i];}for (int i : arr1) {System.out.println("-->"+i);}
}
//数组的反转
public static void main(String[] args) {int[] arr={2,12,14,13,15};for (int i = 0; i < arr.length / 2; i++) {int temp=arr[i];arr[i]=arr[arr.length-1-i];arr[arr.length-1-i]=temp;}//反转后for (int i : arr) {System.out.println(i);}
}
  • 案例3(数组元素的排序)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//冒泡排序
public static void main(String[] args) {int[] arr={3,2,7,10};for (int i = 0; i < arr.length-1; i++) {for (int j = 0; j < arr.length-i-1; j++) {if(arr[j]<arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}//排序后for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}
}//选择排序
public static void main(String[] args) {int[] arr={3,2,7,10};for (int i = 0; i < arr.length-1; i++) {int minIndex=i;//最小值索引for (int j = i+1; j < arr.length; j++) {if(arr[minIndex]>arr[j]){minIndex=j; //交换索引}}int temp=arr[i];arr[i]=arr[minIndex];arr[minIndex]=temp;}//排序后for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}
}
  • 案例4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//二分查找
public class TestDemo03 {public static void main(String[] args) {int[] arr={2,12,14,18,25};System.out.println(searchRecursion(arr,25));}/*** @param arr: 被查找的数组* @param key: 要查找的数据* @return : 返回查找数据的索引*/public static int searchRecursion(int[] arr,int key){//开始索引int left = 0;//结束索引int right=arr.length-1;while (left<=right){int middle=(left+right)/2;if(key==arr[middle]){return middle;}else if(key<arr[middle]){right = middle-1;}else if(key>arr[middle]){left=middle+1;}}return -1;}
}

第三章 二维数组

第1节 声明和初始化

  • 二维数组介绍
1
一维数组中存储的是一维数组 声明的语法  type[][] arr;或者 type[] arr[];(这种方式不常见)
  • 二维数组声明和初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
动态初始化方式一: int[][] arr  = new int[3][2];定义一个arr的二维数组,二维数组中有3个一维数组,每一个一维数组中有2个元素二维数组中的一维数组 arr[0],arr[1],arr[2],给第一个一维数组的1下标赋值 arr[0][1]=100;方式二: int[][] arr = new int[3][];定义一个arr的二维数组,二维数组中有3个一维数组,一维数组的长度自己定义可以给三个一维数组分别初始化arr[0] = new int[2];arr[1]=new int[3];arr[2]=new int[4]; 注意: int[][] arr = new int[][3] //非法静态初始化   方式一 int[][] arr = {{1,2},{3,4},{5,6,7,8}};方式二 int[][] arr =new int[][] {{1,2},{3,4},{5,6,7,8}};注意: 如果静态初始化时,先声明后初始化就会编译错误.int[][] arr;arr={{1},{2},{4}};

第2节 练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//杨辉三角
//1. 第一步
/*** 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0*/
public static void main(String[] args) {int[][] arr=new int[10][10];for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]+"\t");}System.out.println();}
}
//2. 第二步
/*** 0* 0	0* 0	0	0* 0	0	0	0* 0	0	0	0	0* 0	0	0	0	0	0* 0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0* 0	0	0	0	0	0	0	0	0	0*/
public static void main(String[] args) {int[][] arr=new int[10][10];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();}
}
//3. 第三步
/*** 1* 1	1* 1	0	1* 1	0	0	1* 1	0	0	0	1* 1	0	0	0	0	1* 1	0	0	0	0	0	1* 1	0	0	0	0	0	0	1* 1	0	0	0	0	0	0	0	1* 1	0	0	0	0	0	0	0	0	1*/
public static void main(String[] args) {int[][] arr=new int[10][10];for (int i = 0; i < arr.length; i++) {for (int j = 0; j <= i; j++) {if(j==0 || i==j){arr[i][j]=1;}System.out.print(arr[i][j]+"\t");}System.out.println();}
}
//4.第四步
/*** 1* 1	1* 1	2	1* 1	3	3	1* 1	4	6	4	1* 1	5	10	10	5	1* 1	6	15	20	15	6	1* 1	7	21	35	35	21	7	1* 1	8	28	56	70	56	28	8	1* 1	9	36	84	126	126	84	36	9	1*/
public static void main(String[] args) {int[][] arr=new int[10][10];for (int i = 0; i < arr.length; i++) {for (int j = 0; j <= i; j++) {if(j==0 || i==j){arr[i][j]=1;}else{arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}System.out.print(arr[i][j]+"\t");}System.out.println();}
}

http://www.ppmy.cn/news/11358.html

相关文章

米筐量化终端是什么?

米筐量化终端大家应该也能想象到是应用的终端&#xff0c;是系统执行的终端环节&#xff0c;如果是用在量化方面&#xff0c;那它就是策略定制的终端&#xff0c;是方便投资者输入量化策略执行出来发最终优质目的&#xff0c;精确到细分股票的账户成交量&#xff0c;股价以及融…

刚当上leader,我让组员去开会,他非说有更重要的会

☆ 职场上经常有那么一种情况就是组长喊组员开会&#xff0c;开周会&#xff0c;开晨会&#xff0c;开各种会&#xff0c;而更有一种常见的情况呢就是组长缺失威严&#xff0c;喊组员开会&#xff0c;组员不听话&#xff0c;说有更重要的会议&#xff0c;不想参加。 ☆ 本文将以…

Kettle的安装以及简单使用

Kettle是一款开源免费的ETL工具&#xff0c;ETL全称 Extract - Transform - Load 意味着数据抽取&#xff0c;转换&#xff0c;装载的过程。 ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程&#xff0c;目的是将企业中的分散、零乱、标准不统一的数据整合到…

多线程案例

1.阻塞队列1.1阻塞队列的工作原理阻塞队列本质上还是一个队列&#xff0c;但是在队列的基础上加入了阻塞功能&#xff0c;并且线程安全。那么它的阻塞功能体现在两方面1.当队列为空时&#xff0c;进行出队列操作&#xff0c;就进入阻塞状态2.当队列满了时&#xff0c;进行入队列…

Flink多流转换(Flink Stream Unoin、Flink Stream Connect、Flink Stream Window Join)

文章目录多流转换1、分流操作1.1、在flink 1.13版本中已弃用.split()进行分流1.2、使用&#xff08;process function&#xff09;的侧输出流&#xff08;side output&#xff09;进行分流2、基本合流操作2.1、联合&#xff08;Flink Stream Union&#xff09;2.2、连接&#x…

1.5万字总结 Redis 常见面试题知识点

以下内容来源于于我开源的 JavaGuide (Java学习&&面试指南,Github 130k star,370人共同参与爱完善), 万字总结,质量有保障! Redis 基础 什么是 Redis? Redis 是一个基于 C 语言开发的开源数据库(BSD 许可),与传统数据库不同的是 Redis 的数据是存在内存中的…

【Javascript】高阶函数,JSON,forEach,map,filter,reduce函数

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录高阶函数箭头函数apply函数JSONfilter函数map函数总结reduce函数find/findIndex函数every/some函…

容器适配器中stack queue priority_queue的介绍及模拟实现

文章目录容器适配器的概念deque的介绍及底层结构stack的介绍 stack的模拟实现 queue的介绍 queue的模拟实现 priority_queue的介绍 priority_queue的模拟实现 容器适配器的概念 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验…