Java学习_ArrayOperate

/*
目的:复习数组的语法格式和数组的使用方法,体会数组调用与普通数字类型的不同之处,掌握数组引用型数组与实型数据类型的不同
需求:设计一个程序,打印出一个长度为20的一列随机数,并找出该列数中的最小值与最大值。
思路:首先使用随机数生成函数(int)(Math.Random()*n),产生随机数赋值给数组,然后利用遍历的方法循环对数组中的数字进行比较,得出最值;
步骤:定义一个长度为20的数组,把利用循环机制产生20个随机数赋值给该数组;
		将得到的数组利用循环遍历逐个比较大小,分别定义两个变量max和min用来记录最大值和最小值;
		使用系统调用获取最值,然后将最大最小值打印出来。
*/

/*
数组知识详解:
数组概念:同一种类型数据的集合,数据是一个容器;
数组的好处:可以自动的给数组中的元素编号(从0开始编号),方便操作这些元素;
格式1:元素类型[] 数组名 = new 元素类型[x];x为元素个数或者数组长度;eg:int[] arr = new int[x];
格式2:元素类型[] 数组名 = new 元素类型[]  {x1, x2 ,x3 ...}
		int[] arr = new int[] {1,3,5,7}	静态初始化
		int[] arr = {1,3,5,7}
内存结构:
Java虚拟机在运行时,需要在内存中分配空间,为了提高运行效率,对空间进行了不同区域的划分;
因为每一片区域都有特定的处理数据方式和内存管理的方式;
栈内存:用于储存局部变量,当数据使用完毕,其占用空间会自动释放,(包括:定义在方法中的变量,局部变量);
堆内存:数组和对象,通过new建立的实例都在堆内存中,每一个实体都有内存的地址值;
实体中的变量都有默认的初始化值(各种0);
实体不被使用后,会在不确定的时间内被垃圾回收机制回收,可以通过 arr = null进行数组实体的清除释放;(包括:方法区:本地方法区;寄存器)

常见的异常类型:
第一种:ArrayIndexoutofBoundsException -->角标越界异常:操作数组时,访问到了数组中不存在的角标;
eg: int[] arr = new int[3];
	System.out.println(arr[3]); 编译时没有错误,但运行会存在错误;没有角标好为3的元素;
第二种:NullpointException 空指针异常:引用没有任何指向,值为null的情况,该引用还在用于操作实体;
eg: int[] arr = new int[3];
arr = null;释放情况 arr数组
System.out.println(arr[1]);不允许这样操作

第三种:[I@de6ced  --> 打印了一个数组实体的引用内存地址  (哈希算法)

获取数组的长度使用 arr.length 

*/

class ArrayOperate
{
	public static void main(String[] args)
	{	
		int[] arr  = new int[20];	//定义了一个长度为20的数组
		for(int i = 0;i<20;i++)		//利用循环遍历获取20个随机值
		{
			arr[i] = (int)(Math.random()*100);	//使用随机种子函数(int)(Math.random()*n)(获取0-n的数)
		}
		for(int i = 0;i<20;i++)		//利用遍历打印这些随机数
		{	
			System.out.print(arr[i]+"  ");
		}
		System.out.println();
		
		int max,min;		//定义变量用来接收最大值和最小值
		max = Max(arr);		//函数调用
		min = Min(arr);		//函数调用
		System.out.println("最大值="+max+", 最小值="+min);
	}

	public static int Max(int[] arr)
	{
		int max = 0;		//假设最大值的角标为0
		for(int i = 1 ;i<20;i++)
		{
			if(arr[i] > arr[max])	//利用角标来区别不同的数字,进行判断
				max = i;
		}
		return arr[max];			//返回最大值
	}

	public static int Min(int[] arr)//同上
	{
		int min = 0;
		for(int i = 1;i<20;i++)
		{
			if(arr[i]<arr[min])
				min = i;
		}
		return arr[min];			//返回最小值
	}
}

/*
运行结果:
4  69  17  11  90  62  10  26  78  90  27  58  28  17  62  96  99  87  35  13
最大值=99, 最小值=4

*/

你可能感兴趣的:(JavaSE学习)