黑马程序员_数组1

-----------------------------------------------------------------android培训java培训、期待与您交流! ----------------------------------------------------------------


1.内存结构

Java程序在运行时,需要在内存中分配空间。为了提高运算效率,又对空间进行了不同区域的划分。因为每一片区域都有特定的处理数据的方式和内存管理的方式。

栈内存(栈区):用于存储局部变量,当数据使用完,所占空间会自动释放

堆内存(堆区):a.数组和对象,通过new建立的实例都存放在堆内存中。

                           b.每一个实体都有内存地址

                           c.实体中的变量都有默认初始化值

                           d.实体不在被使用,会在不确定的时间内被垃圾回收器回收

方法区

④本地方法区

⑤寄存器

1.1 基本数据类型在初建数组初始值

/**
 * 研究各个基本数据类型数组的默认值
 * 
 */
public class ArrayDemo1 {
	
	public static void main(String[] args){
		byte[] a = new byte[1];
		short[] b = new short[1];
		int[] c = new int[1];
		float[] d = new float[1];
		double[] e = new double[1];
		char[] f = new char[1];
		boolean[] g = new boolean[1];
		long[] h = new long[1];
		
		System.out.println("default_byte = "+a[0]);
		System.out.println("default_short = "+b[0]);
		System.out.println("default_int = "+c[0]);
		System.out.println("default_float = "+d[0]);
		System.out.println("default_double = "+e[0]);
		System.out.println("default_char = '"+f[0]+"'");
		System.out.println("default_boolean = "+g[0]);
		System.out.println("default_byte = "+h[0]);
	}

}

运行结果:

运行结果图

2. 数组的定义和常见异常

定义1: 该定义在内存中分配了空间且有赋给数组默认值。

int[] arr = new int[3]
内存分配图:

内存分配图

定义2: 在创建数组对象的同时赋给指定的值

int[] arr = new int[]{3,1,5,7}


常见异常:

①数组下标越界异常

ArrayIndexOutOfBoundsException

②空指针异常

ArrayIndexOutOfBoundsException


3 数组的常见操作

3.1 遍历:即访问数组中的所有元素

class ArrayDemo2{

	public static void main(String[] args) {
		
		int[] arr = new int[]{9,7,2,5,3,1};
		printArray(arr);
	}

	//打印数组的值,元素之间用逗号隔开
	public static void printArray(int[] arr){
		System.out.print("[");
		for (int i=0; i<arr.length; i++) {
			if (i<arr.length-1) 
				System.out.print(arr[i]+",");
			else
				System.out.println(arr[i]+"]");	
		}
	}
}

3.2 获取数组中的最值

class ArrayDemo3{
	public static void main(String[] args) {
		
		int[] arr = new int[]{9,7,2,5,3,1};
		
		int maxValue = getMax(arr);
		int minValue = getMin(arr);
		int maxValue_index = getMax_index(arr);
		int minValue_index = getMin_index(arr);

		System.out.println("maxValue = "+ maxValue);
		System.out.println("minValue = "+ minValue);
		System.out.println("maxValue_index = "+ maxValue_index);
		System.out.println("minValue_index = "+ minValue_index);
	}

	/*
		方法1: 通过比较记录数组中的值
		方法2: 通过比较记录数组的下标
	 */
	//获取数组中最大的元素
	public static int getMax(int[] arr){
		
		int temp = arr[0];

		for (int i=1; i<arr.length; i++) {
			if (arr[i]>temp){
				temp = arr[i];
			}
		}
		return temp;
	}
	//获取数组中最小的元素
	public static int getMin(int[] arr){

		int temp = arr[0];

		for (int i=1; i<arr.length; i++) {
			if (arr[i]<temp){
				temp = arr[i];
			}
		}
		return temp;
	}

	//方法2获取数组中最大的元素
	public static int getMax_index(int[] arr){

		int index = 0;

		for (int i=1; i<arr.length; i++) {
			if(arr[i]>arr[index]){
				index = i;
			}
		}
		return arr[index];
	}

	//方法2 获取数组中最小的元素
	public static int getMin_index(int[] arr){

		int index = 0;

		for (int i=1; i<arr.length; i++) {
			if(arr[i]<arr[index]){
				index = i;
			}
		}
		return arr[index];
	}
}

最后,可以通过方法的重载扩充各种基本数据类型的数组方法。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值