-----------------------------------------------------------------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];
}
}
最后,可以通过方法的重载扩充各种基本数据类型的数组方法。