今天就只学习了一个数组,虽然说是只学习了数组,但是数组的内容还是很丰富的,学会了数组,在学后面的一些存数据的容器就不是很难了,那就开始吧
一维数组
数组时另外一种存储数据的格式,他在内存中看来的话是一种特殊的变量,我们在前面学习变量的时候发现了变量只能存储一个数据,当存储第二个数据的时候就会覆盖掉前面的数据。而数组可以存储多个数据,他是一种容器。当然他也有优点和缺点
优点:可以存储多个数据
缺点:长度是固定的
数组的定义
上面说了数组是一种特殊的变量,那咱们联想到变量,在想起来变量的格式是:数据类型 变量名。数组和变量有相同的地方也有不同的地方,数组的定义格式是:数据类型[ ] 数组名 = new 数据类型[长度]。还有一种方法是:数据类型[ ] 数组名={ 数据 }。下面举一个例子
class demo1
{
public static void main(String[] args){
int[] a = new int(3);
int[] b = {1,2,3};
}
}
这是数组定义的两种格式,都是对的,但是一般使用第一种格式。
数组的赋值操作
数组定义完成之后可以对数组进行赋值操作。同时需要注意的是,数组定义完成之后里面是有值的,整型的默认的值是0,而字符串的默认为null。对于数组的赋值,有两种办法,直接进行赋值,还有用数组的下标(索引)来进行赋值。数组的下标是从0开始,到数组的长度-1,并且数组有个求长度的方法:数组名.length
class demo4
{
public static void main(String[] args){
int[] arr1 = {1,2,3,4};
int[] arr2 = new int[3];
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3;
}
}
并没有什么错误,也不知道是否把数据存入到了数组中,咱们通过下一个数组的取值来看看是否存入了。
数组的取值操作
数组的取值也有两种办法,第一种就是直接取值,第二种就是定义一个变量来接收数组里面的值,下面用代码来进行讲解
class demo4
{
public static void main(String[] args){
int[] arr1 = {1,2,3};
int[] arr2 = new int[3];
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3;
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
int a1 = arr2[0];
int a2 = arr2[1];
int a3 = arr2[2];
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
}
}
可以显示出来存入的数据。
虽然看起来数组的应用很简单,打但是我们还需要做一些练习题还巩固一下
二维数组
二维数组在以后的工作中应用不多,因为二维数组的长度是固定的,这就有了很大的弊端,不过了解一下总是好一些的
二维数组的定义
二维数组的定义可以联想一维数组的定义
class demo5
{
public static void main(String[] args){
int[][] arr = new int[2][4];
}
}
一点小小的补充
class demo5
{
public static void main(String[] args){
int[][] arr = new int[2][4];
//这个是输出的arr这个数组的地址
System.out.println(arr);
//这个是输出的arr[1]这个数组所指向的地址
//二维数组其实是数组嵌套了数组,本题中,第一个数组中存放的是另外两个数组的地址
System.out.println(arr[1]);
}
}
二维数组的存取
二维数据的存取直接上代码把
class demo6
{
public static void main(String[] args){
int[][] arr = new int[2][4];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[0][3] = 4;
arr[1][0] = 5;
arr[1][1] = 6;
arr[1][2] = 7;
arr[1][3] = 8;
for(int i = 0;i<arr.length;i++){
for(int j = 0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
练习
数组求和、平均值
需求:定义一个五个整数的数组,并且在里面放五个数字,要求输出这五个数字的和还有平均值
分析:
1.先创建空白项目并测试
class demo01
{
//创建空白项目
public static void main(String[] args){
}
}
2.定义一个长度为5的数组
class demo01
{
//创建空白项目
public static void main(String[] args){
//定义一个长度为5的数组
int[] arr = new int[5];
}
}
3.往数组中存入数字
class demo01
{
//创建空白项目
public static void main(String[] args){
//定义一个长度为5的数组
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
}
}
4.先用循环把所有的数字拿出来
class demo01
{
//创建空白项目
public static void main(String[] args){
//定义一个长度为5的数组
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
for(int i = 0;i<arr.length;i++){
//这里面就是所有的数字
}
}
}
5.定义一个总和sum还有平均数average在循环前面
class demo01
{
//创建空白项目
public static void main(String[] args){
//定义一个长度为5的数组
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
int sum = 0;
double average = 0.0;
for(int i = 0;i<arr.length;i++){
//这里面就是所有的数字
}
}
}
6.依次把数字加到sum里面,并把sum输出出来
class demo01
{
//创建空白项目
public static void main(String[] args){
//定义一个长度为5的数组
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
int sum = 0;
double average = 0.0;
for(int i = 0;i<arr.length;i++){
//这里面就是所有的数字
sum+=arr[i];
}
System.out.println(sum);
}
}
7.在求平均数并且进行输出
class demo01
{
//创建空白项目
public static void main(String[] args){
//定义一个长度为5的数组
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
int sum = 0;
double average = 0;
for(int i = 0;i<arr.length;i++){
//这里面就是所有的数字
sum+=arr[i];
}
System.out.println(sum);
average = (double)sum/arr.length;
System.out.println(average);
}
}
数组求最大值最小值
这个题目我就不一步一步的写了,只说方法和最后结果
需求:定义一个长度为5的整型数组,往里面放入五个数字并求出最大值和最小值
分析:
1.创建空白项目并进行测试
2.先定义长度为5的数组并放入五个数字
3.定义一个最大值max和一个最小值min
4.把数组第一个数字给max和min
5.循环数组并把数组的数字和max、min进行比较
6.输出最后的结果
代码如下
class demo02
{
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
int max = arr[0];
int min = arr[0];
for(int i = 0;i<arr.length;i++){
if(arr[i]>max){
max = arr[i];
}
if(arr[i]<min){
min = arr[i];
}
}
System.out.println("最大的数字是:"+max+",最小的数字是:"+min);
}
}
冒泡排序
需求:定义一个长度为6的数组,并用冒泡排序对其进行排序
冒泡排序是比较基础的排序算法之一,其思想是相邻的元素两两比较,较大的数下沉,较小的数冒起来,这样一趟比较下来,最大(小)值就会排列在一端。整个过程如同气泡冒起,因此被称作冒泡排序。
分析:
1.创建项目并进行测试
2.先创建一个长度为6的数组并进行赋值
3.分析一下过程
4.这个排序过程总体来讲分为五大步骤,每一个步骤都能找到一个最大的放在这个数组的最后面
5.然后每个大步骤里是小步骤,先定义一个数字记录下标,是从0开始到长度-1为止,我们就比较这个数字作为下标的那个数和后面的那个数的大小,如果后面的大,那就不动,如果后面的小,则进行互换,然后数字+1。直到比到了最后的数字和倒数第二个数字。
6.循环输出数组
代码如下:
class demo03
{
public static void main(String[] args){
int[] arr = {1,5,4,9,10,2};
int temp = 0;
int jishu = 0;
//先输出一次未排序的时候的数组
System.out.print("未排序的时候:");
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
//外层循环,表示找第几大的数
for(int i = 0;i<arr.length-1;i++){
//内层循环,各个值之间的比较
for(int j = 0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
jishu++;
//每一次比较之后都在进行输出,可以看得出来区别
System.out.print("第"+jishu+"次:");
for(int ij = 0;ij<arr.length;ij++){
System.out.print(arr[ij]+" ");
}
System.out.println();
}
}
}
}