11.1array是什么
array是线性排列 的数据容器,用来存储一组**同一类型的数据元素。**数组会大量的简化一些繁杂的代码。
11.2 怎么样创建与初始化数组
11.2.1 创建一个数组
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = new int[5];
}
}
这样子,创建了一个数组,这个数组是[0,0,0,0,0,0] 因为没有任何初始化的条件,没有任何值放进去,所以它没有任何值。
11.2.2初始化数组
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = new int[5];
nums[0] =10;
nums[1]=20;
nums[2]=30;
}
}
初步赋值,有两个方式第一个就是多步骤的,因为在数组中每一个数字都有一个下标,原来的数组是[0,0,0,0,0]那么第一个的下标是0,所以需要赋值的话,使用 nums[0]=10;那么第零个下标的数字(也就是第一个数字)就变成10,那么经过这个代码之后,数组变成了[10,20,30,0,0]了。
第二种方法,在创建的时候直接初始化
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
}
}
那么这样的话,这个数组被创建出来的时候就是10,20,30,40,50这几个数字了。
所以这个数组是这样的

下标是一个非常容易错的点。在数组中,第一个数字的下标是0!
还有其他类型的 比如说double,int 等等都是可以有数组的,所以如果是double就变成小数就行。
11.3 怎么样使用(CRUD原则)
11.3.1什么是CRUD原则
C= Create(增)
R = Read(查)
U = Update(改变/更新)
D = Delete(删)
在中文中,更多说的是 增删改查
在一维数组中呢,一般长度已经设定好了,在一开始的时候已经设定好了,所以一般不太去改变,如果想要改变,一般使用动态数组(arraylist),而不是一维数组.(当然想要改变当然也是可以的,不常用,也很麻烦,你想要改变数组长度,直接使用arraylist就行)
所以增和删在1D array中都不太常见。
11.3.1.1 改
在一个数组中 如何改变一个array的数字,其实很简单。
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
}
}

在1这个小标这里,变成了25。
那么下标为1的就改变了,(也就是第二个数字被改变了)
11.3.1.2 查
11.3.1.2.1 基本查询
基本查询,想要知道,下标为1现在到底是什么数字了,
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
}
}
那么输出是

那么输出就是25,下标为1就改成了25了。
11.3.1.2.2 长度查询
长度在一开始其实就知道了,但是如果想要知道长度,打印出来长度的话,可以使用length
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
System.out.println(nums.length);
}
}
那么打印出来的结果

上面那个就是下标为1的数字,下面那个就是数组的长度
11.3.1.2.3遍历
遍历数组,是非常重要的一个代码
因为如果想要知道数字所有的数字,并且进行处理,(比较大小啊,算平均数啊 算众数啊等等)必须让数组的数字拿出来,摆在台面上,进行处理,如果直接输出,会导致有乱七八糟的东西出现
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
System.out.println(nums);
}
}
输出就是

就是一个乱码,(不用理解!! [代表的是 数组 I 是int的含义说明之前的是一个int的数组 @分隔符 28a418fc指的是哈希值)
所以这个不能满足我们的想法,所以需要改变,在之前写了 说把所有数字带到台面上,这个其实是循环的结构的特性(if条件语句是分类讨论,循环语句是把所有情况一个一个放在台面上 然后处理)
for循环
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
for(int i = 0;i< nums.length;i++) {
System.out.println("nums这个列表是 " + nums[i]);
}
}
}
那么这个就是for循环遍历了一遍列表

所以这个就打印出来了 数字 之后在题目中就可以应用了
推荐的是使用for-each增强方法(使用一个num来接住nums所有放在台面的数字 然后一一打印出来)
java
public class l1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
int sum = 0;
System.out.println(nums[1]);
for(int i = 0;i< nums.length;i++) {
System.out.println("nums这个列表是 " + nums[i]);
}
for(int num :nums) {
System.out.println(num);
sum+=num;
}
System.out.println(sum);
}
}
同样我用来方法 写了sum 和的方法。
11.4在function中的使用
array(数组)本质上是一个数据类型,和int,double,string一样的,所以在方法中涉及到其他数据类型的,数组也有
11.4.1数组作为参数
java
public class l1 {
public static void sum(int [] nums) {
int sum = 0;
for(int num :nums) {
System.out.println(num);
sum+=num;
}
System.out.println(sum);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
for(int i = 0;i< nums.length;i++) {
System.out.println("nums这个列表是 " + nums[i]);
}
sum(nums);
}
}
在sum()方法中带有参数,同样我使用了sum作为一个容器的方法,所以通过for-each增强来循环与加在一起,最后就是答案。
11.4.2数组作为返回值
int,double等等都能作为返回值,数组也行
java
public class l1 {
public static void sum(int [] nums) {
int sum = 0;
for(int num :nums) {
System.out.println(num);
sum+=num;
}
System.out.println(sum);
}
public static int[] getArray() {
int[] arr = {1, 2, 3, 4};
return arr;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
for(int i = 0;i< nums.length;i++) {
System.out.println("nums这个列表是 " + nums[i]);
}
sum(nums);
}
}
也是成立的,但之后需要使用for增强语句把数组中的数字一个一个打印出来
11.5基本的例题
11.5.1求平均数
java
public class l1 {
public static void average(int [] nums) {
int sum = 0;
for(int num :nums) {
System.out.println(num);
sum+=num;
}
System.out.println(sum);
System.out.println(sum/nums.length);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
for(int i = 0;i< nums.length;i++) {
System.out.println("nums这个列表是 " + nums[i]);
}
average(nums);
}
}
在方法中直接可以写,for增强循环之后,sum/nums.length(这个就是nums中有多少数字)所以除出来就是平均数

11.5.2 求最大值
本质上使用车轮战术就行,max定义为最小值,然后一一去对比
java
public class l1 {
public static void average(int [] nums) {
int sum = 0;
for(int num :nums) {
System.out.println(num);
sum+=num;
}
System.out.println(sum);
System.out.println(sum/nums.length);
}
public static void max(int [] nums) {
int max = Integer.MIN_VALUE;
for(int num : nums) {
if(num>max) {
max = num;
}
}
System.out.println(max);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] nums = {10,20,30,40,50};
nums[1]=25;
System.out.println(nums[1]);
for(int i = 0;i< nums.length;i++) {
System.out.println("nums这个列表是 " + nums[i]);
}
average(nums);
max(nums);
}
}
结果就是
