Java数组(一维数组)

 

目录

前言

数组

数组的概念

数组的特点与规则

一维数组

声明一维数组

创建、初始化一维数组

访问一维数组

修改一维数组元素

For-Each 循环

数组的常用操作

数组长度

数组填充

数组复制

数组比较

数组排序

在数组中搜索指定的元素

把数组转换为字符串

最后


前言

当变量有很多的时候,如果我们定义单个变量时,会显得很麻烦。在Java中,我们引入新的概念数组。那么什么是数组呢,下面我们来学习有关数组(一维数组)的知识。

数组

数组是在程序设计中为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。数组中的每个数据称为数组元素,数组的元素是有序的。

数组的概念

数组是相同数据类型的变量按顺序组成的一种复合数据类型。这些变量具有相同的标识符,即数组名。数组中的每个变量称为属猪的元素或成员。

数组可以存储任何类型的数据,包括原始数据类型和对象,因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

数组的特点与规则

数组提供了一种数据分组的方法,可以通过数组的下标(即数据项在数组中的索引值,从0开始)访问数据。数组有以下特点:

  • 既能存储原始数据类型,又能存储对象类型;
  • 数组元素的个数称为数组的长度。长度一旦确定,就不能改变;
  • 数组的第一个元素的下标是0;
  • 可以创建数组的数组
  • 数组可以作为对象处理,数组对象含有成员变量length,用来表示数组的长度。

数组的规则如下:

  • 可以只给部分元素赋值,当{}中的值个数少于元素个数时,只给前面部分元素赋值,后面的元素自动赋0值;
  • 只能给元素逐个赋值,不能给数组整体赋值;
  • 不给可初始化的数组赋初值时,则全部元素均为0值;
  • 如给全部元素赋值,则在数组说明中可以不给出数组元素的个数;
  • 动态赋值可以在程序执行过程中对数组作动态赋值,可用循环语句配合scanf函数逐个对数组元素赋值。

一维数组

编程最常用到的是一维数组,所谓一维数组,是一组相同类型数组的集合,使用一维数组要声明数组变量、创建数组对象并赋值、访问或修改存储的数据(元素)

声明一维数组

声明一维数组有两种语法格式:

数组类型 [] 数组名;      //声明一维数组,首选的方法建议使用
int [] number;
或
数组类型 数组名[];       //效果相同,但不是首选方法
int number [];

创建、初始化一维数组

创建一维数组语法为:

数组名=new 数据类型[数组长度];

注意:数组长度是能够存放的元素个数,应该是大于0的整数。

一维数组初始化有三种格式,例如:

方法一

语法:数组名[下标]=值;

int [] array=new int [5];     //创建一个整型数组对象,数组长度为5
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
array[4]=5;

方法二:直接创建数组,将声明数组、分配内存和初始化合并完成。语法为:

数据类型 数组名[]={值1,值2,值3,.....,值n};

int [] array={1,2,3,4,5};

一维数组是引用对象,所以可使用new运算符来直接创建一个数组对象,但必须指定数组长度。

方法三:每一次赋值时,只有下标在变,因此可以使用循环给数组赋值。

double a[]=new double[3];             
for(int index=0;index<3;index++){
        a[index]=Double.parseDouble(args[index]);
}

访问一维数组

当创建数组变量并赋值后,我们就可以访问数组中的元素了。例如:

public class myfirst {
	public static void main(String[] args) {
		int [] array= {1,2,3,4,5};             //创建名为array的一维数组并赋值
		System.out.println(array[1]);          //输出数组array的第二个元素值
		for(int i=0;i<array.length;i++) {      //循环逐个输出数组元素
			System.out.print(array[i]+" ");
		}
	}
}

运行结果为:

2
1 2 3 4 5  

注意:数组元素的下标从0开始。如果在程序中引用了下标超出数组范围的元素,Java编译器会显示一个“ArrayIndexOutOfBoundsException”的错误提示。

修改一维数组元素

数组中的元素值是可以改变的。在声明一个数组变量和创建一个数组对象以后,可以通过为数组中的元素赋值,来修改数组任一元素的值。例如:

public class myfirst {
	public static void main(String[] args) {
		int [] array1= {1,2,3,4,5};             //定义一个一维数组array并赋值初值
		System.out.print("未改变的数组元素为:"); 
		for(int i=0;i<array1.length;i++) {      //使用循环for输出数组元素
			System.out.print(array1[i]+" ");
		}
		array1[3]=6;                            //修改第四个数组元素
		System.out.print("\n改变后的数组元素为:");
		for(int i=0;i<array1.length;i++) {      //使用循环for输出数组元素
			System.out.print(array1[i]+" ");
		}
	}
}

运行结果为:

未改变的数组元素为:1 2 3 4 5 
改变后的数组元素为:1 2 3 6 5 

For-Each 循环

JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。语法格式如下:

for(数组类型 element: 数组名)
{
    System.out.println(element);
}

例如:

public class myfirst {
	public static void main(String[] args) {
		double[] myList = {1.9, 2.9, 3.4, 3.5};  //创建一个一维数组myList
	      for (double element: myList) {	     // 打印所有数组元素
	         System.out.print(element+"  ");
	      }
	}
}

运行结果为:

1.9  2.9  3.4  3.5  

数组的常用操作

数组的常用操作包括数组的填充、复制、比较、排序等。Java提供了相应对数组元素操作的系统函数(方法),利用系统函数(方法)可以对数组进行各种操作。

数组长度

数组的长度指的是数组中包含多少个元素。如果我们想获得数组的长度,可以用其本身的length属性获得。语法格式为:

数组名.length;

例如:

public class myfirst {
	public static void main(String[] args) {
		int [] array1= {1,2,3,4,5};             //创建一维数组array1
		int length=array1.length;               //创建int类型常量length并赋值为array数组长度
		System.out.print("数组的长度为:"+length);
	}
}

运行结果为:

数组的长度为:5

数组填充

数组填充指的是将一个数组或数组指定元素用固定值添加到数组中,可以使用Arrays类提供的fill对数组进行填充,语法格式为:

Arrays.fill(数组名,值)         //将值全部填充到数组中   
或
Arrays.fill(数组名,开始下标,结束下标,值);      //将值填充到开始下标到结束下标的部分

例如:

import java.util.Arrays;             //添加java.util.Arrays包
public class myfirst {
	public static void main(String[] args) {
		int [] a=new int[5];    //定义一个整型数组a,b        
		int [] b=new int[5];
		Arrays.fill(a, 1);      //给数组a填充值为1
		Arrays.fill(b, 2,4,20);	//给数组b的开始下标为2到结束下标为4
		for(int i=0;i<a.length;i++) {        //for循环输出数组a
			System.out.print(a[i]+" ");
		}
		System.out.println();
		for(int i=0;i<b.length;i++) {        //for循环输出数组b
			System.out.print(b[i]+" ");
		}
	}
}

运行结果为:

1 1 1 1 1 
0 0 20 20 0 

数组复制

数组复制是将一个指定数组范围内的元素值复制到另一个数组中去。Java提供Arraycopy函数(方法)来进行数组的复制操作。语法如下:

Arraycopy (数组a,开始复制下标,复制到数组b,开始复制下标,复制长度);

例如:

public class myfirst {
	public static void main(String[] args) {
		int[] a= {1,2,3,4,5};			//定义一个整数数组a,b
		int []b= {11,12,13,14,15};
		System.arraycopy(b, 1, a, 2, 3); //将数组b的值复制到数组a中
		System.out.println("复制后a数组的值为:");
		for(int i=0;i<a.length;i++) {    //for循环输出数组a
			System.out.print(a[i]+" ");
		}
	}
}

运行结果为:

复制后a数组的值为:
1 2 12 13 14 

数组比较

数组之间也可以进行比较,如果两个数组的长度一样,并且相同位置的元素也一样,那么这两个数组相同,否则不相同。我们可以使用Arrays提供的equals来判断两个数组是否相同。语法格式为:

Arrays.equals(数组1,数组2);
import java.util.Arrays;
public class myfirst {
	public static void main(String[] args) {
		int[] a= {1,2,3,4,5};			//定义一个整数数组a,b
		int []b= {11,12,13,14,15};
		if(Arrays.equals(a, b))         //比较a,b数组
			System.out.print("两个数组相同");
		else
			System.out.print("两个数组不相同");
	}
}

运行结果为:

两个数组不相同

数组排序

数组排序指的是将数组中元素按照一定的顺序进行排列,数组排序主要包括sort函数(方法)排序和冒泡排序。Arrays提供了sort函数(方法)排序,语法格式为:

Array.sort(数组);
或者
Array.sort(数组,开始下标,结束下标);

sort函数(方法)是升序排序,可以将数组全部排序,也可以在指定范围内将元素排序。例如:

import java.util.Arrays;
public class myfirst {
	public static void main(String[] args) {
		int[] a= {0,8,7,2,5};			//定义一个整数数组a,b
		int []b= {22,10,30,20,15};		
		Arrays.sort(a);                 //将数组a全部升序排序
		Arrays.sort(b,2,4);             //将数组b的开始下标为2,结束下标为4的元素升序排序
		System.out.print("数组a排序后为:");
		for(int i=0;i<a.length;i++) {   //for循环输出数组a
			System.out.print(a[i]+" ");
		}
		System.out.println();
		System.out.print("数组a排序后为:");
		for(int i=0;i<b.length;i++) {   //for循环输出数组a
			System.out.print(b[i]+" ");
		}
	}
}

运行结果为:

数组a排序后为:0 2 5 7 8 
数组a排序后为:22 10 20 30 15

数组排序除了sort函数(方法)外,还有一种冒泡排序法,又称交换排序法。整个过程是把数组中最小的元素看成重量最轻的气泡,让它上浮并依次从底端进行上浮操作,所以形象地称为冒泡排序,例如:

public class myfirst {
	public static void main(String[] args) {
		int[] a= {0,8,7,2,5};			//定义一个整数数组a
		int temp;                       //定义一个中间变量进行交换
		for(int i=0;i<a.length;i++) {   //进行冒泡法进行排序
			for(int k=i;k<a.length;k++) {
				if(a[k]<a[i]) {
					temp=a[i];
					a[i]=a[k];
					a[k]=temp;
				}
			}
		}
		System.out.print("数组a排序后为:");
		for(int i=0;i<a.length;i++) {   //for循环输出a数组
			System.out.print(a[i]+" ");
		}
	}
}

运行结果为:

数组a排序后为:0 2 5 7 8 

在数组中搜索指定的元素

当需要搜索数组中某个元素是否存在,可以使用Arrays提供的binarySearch函数(方法)进行搜索。语法格式为:

binarySearch(数组,指定元素);
或者
binarySearch(数组,开始位置,结束位置,指定元素);

该方法的返回值是int类型,指所在的下标,例如:

import java.util.Arrays;            //添加java.util.Arrays包
public class myfirst {
	public static void main(String[] args) {
		int[] a = {33,11,9,4,5};			//定义一个整数数组a
		int num1=Arrays.binarySearch(a,9);  //在数组a中搜索9
		if(num1>=0)
			System.out.print("9在数组a中的位置是"+num1);
		else
			System.out.print("9不在数组中");
	}
}

把数组转换为字符串

数组还可以转换为由数组元素列表组成的字符串,可以使用Arrays类的toString函数(方法),任何数组类型都可以。语法格式为:

toString(数组类型,数组名);

返回值为字符串类型。例如:

import java.util.Arrays;
public class myfirst {
	public static void main(String[] args) {
		int[] a = {33,11,9,4,5};			//定义一个整数数组a
		System.out.println("int类型数组a转换成字符串为:"+Arrays.toString(a));
	}
}

运行结果为:

int类型数组a转换成字符串为:[33, 11, 9, 4, 5]

最后

好了,有关Java数组一维数组的知识讲到这里了,谢谢观看!!!

我们下篇文章再见!!!

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白巧克力LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值