数组(Array)是一个引用数据类型的变量,是存储相同数据类型的一组数据的集合,可以是基本数据类型也可以是引用数据类型。可以是一维或二维数组,也可以是多维数组。
数组的基本要素
- 标识符---->数组名,它是用来统一这组相同数据类型的元素的名称,建议使用有意义的名称
- 数组元素---->就是数组的值,包含数组的长度,元素的个数;
- 元素下标---->从0开始一直到最后一个元素的个数;
- 元素类型---->类型;
如何使用数组——数组的4个步骤
- 声明数组: 告诉计算机数据类型是什么
元素类型[] 数组名; // 建议使用的方式 元素类型 数组名[]; // 效果相同
- 分配空间: 告诉计算机分配几个连续的空间,数组元素根据类型不同,有不同初始值。数组声明后实际上是在栈内存中保存了此数组的名称,接下来便是要在堆内存中配置数组所需的内存,其中“元素的个数”(数组的长度)是告诉编译器,所声明的数组要存放多少个元素,而“new”则是命令编译器根据括号里的长度开辟空间。一旦空间(长度)确定就不能修改,想要修改只能在原有的基础上,重新创建一个新的数组,重新声明数组的同时重新分配内存空间(长度:length+n,n表示新数组的长度):
素类型 数组名[] = new 元素类型[元素的个数];
- 赋值: 向分配的空间内存放数据
public class Test { public static void main(String[] args) { int score[] = null; // 【1】声明数组,但未开辟堆内存 score = new int[3]; // 【2】为数组开辟堆内存空间,大小为3 for (int x = 0; x <= score.length-1; x++) { // 数组的长度可以用“数组名.length”, 数组索引从 0 开始,所以索引值从 0 到数组长度。length-1。 score[x] = x * 2 + 1 ; // 为每一个元素赋值 } // 【3】开辟堆内存空间结束 for (int x = 0; x < 3; x++) { // 使用循环依次输出数组中的全部内容 System.out.println("score[" + x + "] = " + score[x]); } } }
接下来,我们对以上代码进行内存分析,【1】【2】【3】处分别对应的就是下面这三张图:
数组的内容分为动态初始化和静态初始化两种,那么也可以通过数组静态初始化在数组声明时就为数组元素分配空间并赋值。
元素类型 数组名 = {元素1,元素2...}; 元素类型 数组名 = new 元素类型[]{元素1,元素2...};
- 处理数据: 数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环,接下来我们一起学习一个创建数组,寻找数组最大值,数组的和,数组中的数!
首先,在我们处理数据时,得先有一组数据,将数据放在数组中~比如,我们随便输入5个数!
package array;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] arr=new int[5];
for(int i=0;i<arr.length;i++) {
System.out.print("请输入第"+(i+1)+"个数");
arr[i]=sc.nextInt(); //根据i的值来变化数组下标
}
}
}
比如,输入5,4,6,8,1这五个数;
接下来让我们遍历这个数组:
System.out.print("[");
for(int i=0;i<arr.length;i++) {
if(i==arr.length-1) {
System.out.print(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
得到是:这样一个数组,整体代码是:
package array;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] arr=new int[5];
for(int i=0;i<arr.length;i++) {
System.out.print("请输入第"+(i+1)+"个数");
arr[i]=sc.nextInt();//根据i的值来变化数组下标
}
//数组的遍历
System.out.print("[");
for(int i=0;i<arr.length;i++) {
if(i==arr.length-1) {
System.out.print(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
}
}
}
}
这就是我们处理数据的第一步------->先创建一个数组!!!当然,我们可以使用Arrays工具,toString()出来这个数组!!!
其次,我们通过代码来找到这五个数中最大的数:
int max=arr[0];//求最值
for (int i=0;i<arr.length;i++) {
if(max<arr[i]) {
max=arr[i];
}
}
System.out.println("最大值为:"+max);
这个最大的数是8!
找到了数组中的最大值,再来算一下这五个数的总和:
int b=0;//求和
for (int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
b+=arr[i];
}
System.out.println("数列和为:"+b);
通过代码得到是:
我们找了这个数组里面的最大值,以及这个数组的和,接下来我们再输入一个数,看看这个数是否在这个数组中,如果这个在数组中,找到在第几个位置
System.out.println("请输入一个数:");
int c=in.nextInt();
for (int i=0;i<arr.length;i++) {
if(c==arr[i]) {
System.out.println("数列包含这个数,位置在"+i);
break;
}else if(i==arr.length-1){
System.out.println("数列不包含这个数");
}
}
我们输入个8,,换个9再试一次。
整体的代码如下:
package array;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
Scanner sc=new Scanner(System.in);
int[] arr=new int[5];
for(int i=0;i<arr.length;i++) {
System.out.print("请输入第"+(i+1)+"个数");
arr[i]=sc.nextInt();//根据i的值来变化数组下标
}
//数组的遍历
System.out.print("[");
for(int i=0;i<arr.length;i++) {
if(i==arr.length-1) {
System.out.print(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
}
}
int max=arr[0];//求最值
for (int i=0;i<arr.length;i++) {
if(max<arr[i]) {
max=arr[i];
}
}
System.out.println("最大值为:"+max);
int b=0;//求和
for (int i=0;i<arr.length;i++) {
System.out.print(arr[i]+",");
b+=arr[i];
}
System.out.println("数列和为:"+b);
System.out.println("请输入一个数:");
int c=in.nextInt();
for (int i=0;i<arr.length;i++) {
if(c==arr[i]) {
System.out.println("数列包含这个数,位置在"+i);
break;
}else if(i==arr.length-1){
System.out.println("数列不包含这个数");
}
}
System.out.println("程序结束");
}
}
输出的结果是:
后面我们会慢慢一起学习更多的数据处理,我也会跟大家一起分享。
一个爱骑机车的码农敬上!!!