1.什么是数组?
数组是相同类型的数据按顺序组成的一种引用数据类型。
数据类型:
1.基本数据类型
2引用数据类型:类、接口、数组
数组的声明:
语法格式:数据类型[] 数组名(int[] array) or 数据类型 数据名[](int array[])
变量声明的语法格式: 数据类型 变量名
数组的创建:
语法格式一:先声明后创建
数据类型[] 数组名
数组名=new 数据类型[数组长度]
语法格式二:声明的同时创建数组
数据类型[] 数组名=new 数据类型[数组长度]
int arr =new int[10]; 注意:数组的长度必须指定
数组的初始化:
数据在声明的同时给数组进行赋值,叫数组的初始化
数组的应用:不同类型数组的默认值
package com.demo.day3.array;
public class ArrayDemo {
public static void main(String[] args) {
//输出各类型数组的默认值
//声明一个整形数组
int[] intArray;
//声明一个字符串类型数组
String[] strArray;
//创建数组
intArray=new int[5];
strArray=new String[10];
//声明的同时数组初始化
float[] f=new float[5];
int[] intArray2=new int[10];
char[] ch= {'a','b','c','d'};
char[] ch2=new char[4];
//输出字符数组的长度
System.out.println("这是字符数组的长度"+ch.length);
//为整形数组进行循环赋值
for(int i=0;i<5;i++) {
intArray[i]=i+1;
}
//循环输出整形数组
for(int i=0;i<5;i++){
System.out.print(intArray[i]+" ");
}
System.out.println();
System.out.println("这是整形数组的默认值"+intArray2[0]);
System.out.println("这是字符串数组的默认值"+strArray[0]);
System.out.println("这是浮点型数组的默认值"+f[f.length-1]);//输出最后一个f[9] 长度为10
System.out.println("这是字符数组的默认值"+ch2[0]);
}
}
输出结果:
这是字符数组的长度4
1 2 3 4 5
这是整形数组的默认值0
这是字符串数组的默认值null
这是浮点型数组的默认值0.0
这是字符数组的默认值
案例1:求数组元素的累加和
package com.demo.day3.array;
import java.util.Scanner;
public class ArrayPlusDemo {
public static void main(String[] args) {
// 求从键盘输入的数字给数组赋值,并求其累加和
int[] intArray=new int[5];
for(int i=0;i<intArray.length;i++) {
System.out.print("请输入第"+(i+1)+"个元素的值");
//从键盘里面输入数据
Scanner sc=new Scanner(System.in);
//逐一赋值
intArray[i]=sc.nextInt();
}
//循环输出数组的值
for(int i=0;i<intArray.length;i++) {
System.out.print(intArray[i]+" ");
}
System.out.println("\n增强型for循环输出数组的值");//换行
//增强型for循环输出数组的值
for(int n:intArray) {
System.out.print(n+" ");
}
//计数数组的累加和
int sum=0;
for(int i=0;i<intArray.length;i++) {
sum=sum+intArray[i];
}
System.out.println();//换行
System.out.println("数组的累加和为:"+sum);
}
}
输出结果:
请输入第1个元素的值1
请输入第2个元素的值2
请输入第3个元素的值3
请输入第4个元素的值4
请输入第5个元素的值5
1 2 3 4 5
增强型for循环输出数组的值
1 2 3 4 5
数组的累加和为:15
数组案例:冒泡排序
将一组数按从小到大的方法进行排序
{23,14,26,55,24,56}
分析:
第一轮:(内轮五次比较)
23与14比较,23>14,互换位置;
23与26比较,23<26,不变;
26与55比较,26<55,不变;
55与24比较,55>24,互换位置
55与56比较,55<56,不变
结果{14,23,26,24,55,56}
第二轮:(内轮四次比较)
14与23比较,23>14,不变
23与26比较,23<26,不变;
26与24比较,26>24,互换位置;
26与55比较,55>26,不变
结果:{14,23,24,26,55,56}
第三轮:(内轮三次比较)
14与23比较,23>14,不变
23与24比较,24>23,不变;
24与26比较,26>24,不变;
结果:{14,23,24,26,55,56}
第四轮:(内轮两次比较)
14与23比较,23>14,不变
23与24比较,24>23,不变;
结果:{14,23,24,26,55,56}
第五轮:(内轮一次比较)
14与23比较,23>14,不变
结果:{14,23,24,26,55,56}
6个数要完成
5次外轮比较、内轮比较,每次减1
数组案例:冒泡排序法
从大到小排序
package com.demo.day3.array;
public class SortDemo {
public static void main(String[] args) {
// 冒泡排序 从大到小排序
// 定义一个整形数组
int[] array = { 23, 11, 5, 35, 24, 14 };
// 输出未排序的数组
for (int n : array) {
System.out.print(n+" ");
}
// 外层循环
for (int i = 0; i < ((array.length) - 1); i++) {
// 内层循环控制每趟的排序
for (int j = 0; j < ((array.length) - 1) - i; j++) {
int temp;// 数据交换盒子
if (array[j] < array[j + 1]) {
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
System.out.println();
for (int n2:array) {
System.out.print(n2+" ");
}
}
}
结果:
23 11 5 35 24 14
35 24 23 14 11 5