1.为什么需要数组?
多个个变量写起来太繁琐,不利于数据处理
2.什么是数组?
数组是一个变量,存储相同数据类型的一组数据(相同数据类型、不是一个是一组)
1.声明一个变量就是在内存空间划出一块合适的空间
2.声明一个数组就是在内存空间划出一串连续的空间
3.数组基本要素?
标识符:数组的名称,用于区分不同的数组
数组元素:向数组中存放的数据
元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
元素类型:数组元素的数据类型
4.数组的特点?
数组长度固定不变,避免数组越界;可少放数据但不可多放数据,多了会报错
5.如何使用定义数组?
public class Case2 {
public static void main(String[] args) {
//定义数组(方法一)
int[] arr=new int[5];
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
arr[4]=50;
System.out.println(arr[0]);
//分配内存+赋值(方法二)
double[] arr2={100,200,300,400,500};
System.out.println(arr2[2]);
}
}
6.使用数组的好处是什么?
便于统一处理一组数据
7.如何使用数组?
- 告诉计算机数据类型是什么(声明数组时不规定数组长度 )
数据类型 数组名[ ] ;
数据类型[ ] 数组名 ;
2.分配空间语法:告诉计算机分配几个连续的空间
声明数组并分配空间
数据类型[ ] 数组名 = new 数据类型[大小] ;
3.数组赋值:向分配的格子里放数据
方法1: 边声明边赋值
方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}
4.处理数据:对数据进行处理
举例:数组的长度如何求
public class Case3 {
public static void main(String[] args) {
double[] scores={70,60,40,10,100};
//数组的长度
System.out.println("数组长度"+scores.length);
double sum=0;
double avg=0;
for (int i = 0; i < scores.length; i++) {
sum=sum+scores[i];
}
avg=sum/scores.length;
System.out.println("平均分"+avg);
}
}
8.数组常见错误?
1.编译出错,没有写明数组的大小
2.编译出错,数组越界编译出错,创建数组并赋值的方式
3.必须在一条语句中完成
练习:显示商品名称,挨个输出
public class Case4 {
public static void main(String[] args) {
//显示商品名称
String[] sp={"Nike背包","Adidas运动衫","李宁运动鞋","Kappa外套","361腰包"};
System.out.println("本次特价商品有:");
for (int i = 0; i < sp.length; i++) {
System.out.println(sp[i]);
}
}
}
练习:数组排序:进行升序排列后输出结果
import java.lang.reflect.Array;
import java.util.Arrays;
public class Case5 {
public static void main(String[] args) {
double[] scores={10,50,100,60,90,30};
//arrays 数组工具类
Arrays.sort(scores);
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
}
}
练习:求最大值
import java.util.Scanner;
public class Case6 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
//最大值
double[] arr={10,50,100,60,90,30};
System.out.println("从键盘输入");
double max=arr[0];
double min=arr[0];
for (int i = 0; i < arr.length; i++) {
if(arr[i]>max){
max=arr[i];
}
}
System.out.println("最大"+max);
}
}
心得:放最大值,所有数字与最大值比,比它大就替代它,比它小就继续比
练习:插入算法
import java.util.Scanner;
public class Case7 {
public static void main(String[] args) {
int[] arr=new int[6];
arr[0]=100;
arr[1]=90;
arr[2]=80;
arr[3]=70;
arr[4]=60;
Scanner input=new Scanner(System.in);
System.out.println("输入您要插入的数字");
int num=input.nextInt();
int index=arr.length-1; //保存插入的位置
//1-寻找插入位置
for (int i = 0; i < arr.length; i++) {
if (arr[i]<num) {
index=i;
break;
}
}
//2-后移 a[0] [1] [2] [3] [4] [5]
for(int j=arr.length;j>index+1;j--) {
arr[j-1]=arr[j-2];
}
//3-插入数据
arr[index]=num;
//打印
for(int k=0;k<arr.length;k++) {
System.out.println(arr[k]);
}
}
}
心得:分三步,寻找插入位置、后移、插入数据
练习:冒泡排序
public class Case8 {
public static void main(String[] args) {
int[] arr={60,70,20,40,10,100};
// i<arr.length-1
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length-1; j++) {
// 冒泡排序
// 升序 降序
if (arr[j]<arr[j+1]) {
//交换
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//打印
for (int k = 0; k < arr.length; k++) {
System.out.println(arr[k]);
}
}
}
心得:外层循环i<n-1;内层循环j<n-1-i
练习:字符逆序输出
import java.util.Arrays;
public class Case9 {
public static void main(String[] args) {
//字符逆序输出
char[] arr={'a','c','u','b','e','p','f','z'};
System.out.print("原字符序列");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
Arrays.sort(arr);
System.out.println();
System.out.print("升序排序后");
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j]);
}
System.out.println();
System.out.print("降序排序后");
for (int k = arr.length-1; k >= 0; k--) {
System.out.print(arr[k]);
}
}
}