java学习(三)——数组

一维数组

import java.util.Arrays;
public class ArraysDemo
{
	public static void main(String[] args)
	{
		//1.声明数组(只声明了变量a,并没有将a初始化为一个数组)  等价于 int a[];
		int[] a;

		/*2.声明并创建数组
				创建一个数字数组时,所有的元素都默认初始化为0
				创建一个boolean型数组时,所有的元素都默认初始化为false
				创建一个char型数组时,所有的元素都默认初始化为'\0'
				创建一个对象数组时,所有的元素都默认初始化为null
		*/
		int n=4;
		int[] b=new int[10];
		boolean[] c=new boolean[n];		//数组长度可以是变量
		char[] ch=new char[5];
		String[] str=new String[5];

		float[] d=new float[0];		//允许长度为0:编写结果为数组的方法,如果结果为空时使用,
		
		for(int i=0;i<b.length;i++)
			System.out.print(b[i]+" ");
		System.out.println();
		for(int i=0;i<c.length;i++)
			System.out.print(c[i]+" ");
		System.out.println();
		for(int i=0;i<ch.length;i++)
			System.out.print(ch[i]+"_");
		System.out.println();
		for(int i=0;i<str.length;i++)
			System.out.print("str["+i+"]="+str[i]+" ");
		System.out.println();

> 运行结果**************************************
 0 0 0 0 0 0 0 0 
 false false false false
  _ _ _ _ _
 str[0]=null str[1]=null str[2]=null str[3]=null str[4]=null
> *********************************************

		//3.创建并初始化数组
		int[] arr1={1,2,3,4,5};		//数组的大小就是初始值的个数

		//4.匿名数组
		arr1=new int[]{5,6,7,8,9,10};	//可以在不创建变量的情况下重新初始化一个数组
		
		//5.数组的遍历
			//5.1 for循环
		System.out.print("数组arr1=");
		for(int i=0;i<arr1.length;i++)
			System.out.print(arr1[i]+" ");
		System.out.println();
			/*5.2 foreach循环:用来一次处理数组中的每个元素
				for(变量:数组或实现Iterable接口的类对象)
				{
					语句块
				}
			*/
		System.out.print("数组arr1=");
		for(int temp:arr1)		//temp变量用于暂存集合中的每一个元素
			System.out.print(temp+" ");
		System.out.println();
			//5.3 打印数组的所有值(Arrays类的toString()方法):返回包含数组中数据元素的字符串,这些数据元素被放在括号内,并用逗号分隔
		System.out.println("数组arr1="+Arrays.toString(arr1));

> 运行结果**************************************
 数组arr1=5,6,7,8,9,10
 数组arr1=5,6,7,8,9,10
 数组arr1=[5, 6, 7, 8, 9, 10]
> *********************************************


		//6.拷贝数组
			//6.1 将一个数组变量拷贝给另一个数组变量
		int[] arr2=arr1;		//这是arr1和arr2将同时引用同一个数组
		
		System.out.println("arr1[0]="+arr1[0]);
		arr2[0]=100;
		System.out.println("数组arr2="+Arrays.toString(arr2));
		System.out.println("arr1[0]="+arr1[0]);
			//6.2 将一个数组所有值拷贝到一个新的数组中(Arrays类的copyOf()方法)
			//6.2.1 拷贝后的数组等于原数组长度
		int[] arr3=Arrays.copyOf(arr2,arr2.length);		//第二个参数是新数组的长度
	
		System.out.println("arr2[0]="+arr2[0]);
		arr3[0]=99;
		System.out.println("数组arr3="+Arrays.toString(arr3));
		System.out.println("arr2[0]="+arr2[0]);
			/*6.2.2 Arrays.copuOf()方法常被用来增加(或减少)数组的大小
				如果新数组的长度比原数组大,多余的元素数值型赋值为0,boolean型赋值为false
				如果新数组的长度比原数组小,只拷贝前面的数组元素
			*/
		int[] arr4=Arrays.copyOf(arr2,arr2.length*2);
		System.out.println("数组arr4="+Arrays.toString(arr4));
		int[] arr5=Arrays.copyOf(arr2,arr2.length/2);
		System.out.println("数组arr5="+Arrays.toString(arr5));
			//6.2.3 Arays.copyOfRange(type[] a,int start,int end):拷贝数组从下标start(包含这个元素)开始到下标end(不包含这个值)结束的数组元素、新数组大小为end-start
		int[] arr6=Arrays.copyOfRange(arr2,1,3);		//第三个参数如果大于arr2的数组大小,则多余的数组元素为0或false
		System.out.println("数组arr6="+Arrays.toString(arr6));
> 运行结果*************************************
  arr1[0]=5;
  数组arr2=[100, 6, 7, 8, 9, 10] 
  arr1[0]=100;
  arr2[0]=100
  数组arr3=[99, 6, 7, 8, 9, 10] 
  arr2[0]=100
  数组arr4=[100, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0] 
  数组arr5=[100, 6, 7] 
  数组arr6=[6, 7] 
   
> *********************************************


		//7.数组排序(Arrays类中的sort方法):优化的快速排序算法
		int[] ar1={34,66,78,45,8};
		Arrays.sort(ar1);
		System.out.println("数组ar1="+Arrays.toString(ar1));
> 运行结果**************************************
  数组ar1=[8, 34, 45, 66, 78] 
> *********************************************

		/*8.二分查找
			8.1 static int binarySearch(type[] a,type v)
			8.2 static int binarySearch(type[] a,int start,int end,type v)		(查找包含start,不包含end)
		返回值:成功返回数组下标值,否则返回一个负数值r.-r-1是插入v后数组任然有序的位置
		*/
		int[] ar2={-14,-2,0,3,5,11,17,23,45,55,100};
		System.out.println("5的下标为:"+Arrays.binarySearch(ar2,5));
		int i=Arrays.binarySearch(ar2,6);
		if(i<0)
			System.out.println("没有找到!"+i);
		//System.out.println("17的下标为:"+Arrays.binarySearch(ar2,4,10));		//在jdk8中不可用
> 运行结果**************************************
 5的下标为:4
 没有找到!-6
> *********************************************
		//9.其他方法
			//9.1 将数组的所有数据元素设置为v		static void fill(type[] a,type v)
		float[] ar3={1.2f,3.5f,7.8f,33.4f,56.8f};
		Arrays.fill(ar3,1.1f);
		System.out.println("数组ar3="+Arrays.toString(ar3));
			/*9.2 判断数组是否相等
			如果两个数组大小相同,并且下标相同的元素都对应相等.则返回true,否则返回false
				static boolean equals(type[] a,type[] b)
			*/
		System.out.println("两个匿名数组是否相等:"+Arrays.equals(new int[]{1,2,3},new int[]{1,2,3}));
> 运行结果**************************************
 数组ar3=[1.1, 1.1, 1.1, 1.1, 1.1] 
 两个匿名数组是否相等:true
> *********************************************
	}
}	

多维数组

java实际上没有多维数组,只有一维数组,二维数组int a[n][m]实际上是一个包含n个元素的数组,而每个元素又是由m个int类型构成的数组

import java.util.Arrays;
public class ArraysDemo
{
	public static void main(String[] args)
	{
		//声明创建初始化方式和一维数组类似
		//1. 二维数组的遍历
		int[][] a={
			{1,2,3,4},
			{5,6,7,8},
			{9,10,11,12},
		};
			//1.1 foreach方式
		System.out.println("数组a=");
		for(int[] row: a)
		{
			for(int temp:row)
				System.out.print(temp+" ");
			System.out.println();
		}	
			//快速的打印一个二维数组的数据元素列表 Arrays.deepToString()方法
		System.out.println("数组a="+Arrays.deepToString(a));


		//2.不规则数组:数组的每一行都有不同的长度
			//2.1 构造一个不规则数组
		int[][] arr1=new int[5][];	//该二维数组含有5行
		for(int i=0;i<arr1.length;i++)
		{
			arr1[i]=new int[i+1];
		}
		for(int i=0;i<arr1.length;i++)
		{
			for(int j=0;j<arr1[i].length;j++)
				System.out.print(arr1[i][j]+" ");
			System.out.println();
		}
		for(int[] i:arr1)
		{
			for(int j:i)
				System.out.print(j+" ");
			System.out.println();
		}
		System.out.println(Arrays.deepToString(arr1));
	}
}	

在这里插入图片描述

返回目录

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值