----------------------
ASP.Net+Android+IOS开发</a>、
.Net培训、期待与您交流! ----------------------
内存结构
---------------------- ASP.Net+Android+IOS开发</a>、 .Net培训、期待与您交流! ----------------------
理解数组
数组是编程语言中常见的一种数据结构,它用于存储多个数据,每个数据被称为数组元素,通常通过数组元素的索引来访问数组元素,索引从0开始编号
Java的数组要求所有数组元素具有相同的数据类型,可以是基本数据类型,也可以是引用数据类型
注意:
因为Java是面向对象的语言,支持类与类之间的继承,可以创建父类类型的数组,存放不同的子类
一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度不可改变
数组也是一种数据类型,它本身是一种引用类型
数组的定义和初始化
int[] arr = new int[]{3, 5, 1, 3};
int[] arr = {3, 5, 1, 3};
int[] arr = new int[4];
内存结构
Java程序在运行时,需要在内存中分配空间,为了提高效率,又对空间进行了不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式
栈内存
用于存储局部变量(方法或语句中的变量),当数据使用完,所占空间会自动释放
数组引用变量也存储在栈内存中,数组元素存储在堆中
每个方法都会在栈中开辟自己的一段栈空间,存放局部变量,方法一结束,空间立刻释放
堆内存
数组元素和对象(非引用),通过new建立的实例都存放在堆内存中,每一个实例都有内存地址值
对象中的成员变量会被初始化(栈内存中的局部变量默认不会初始化)
方法区(共享区)
存放方法体
静态成员
二维数组
二维数组中有3个一维数组,每一个一维数组中有4个元素
一维数组的名称分别为:arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
Arrays
用于操作数组的工具类
里面都是静态方法
import java.util.Arrays;
import java.util.List;
/**
static <T> List<T> asList(T... a)
*/
class ArraysTest
{
public static void main(String[] args)
{
String[] arr1 = {"sdf", "saldf"};
//可变参数
List<String> list = Arrays.asList("sdf", "df", "sdfsdf");
System.out.println(list);
//jdk1.4的时候,还没有可变参数,使用的是Object数组,为了向下兼容,以后版本的asList方法也可以接收数组
list = Arrays.asList(arr1);
System.out.println(list);
//下面的数组a不能赋值给Object[],因为a中是int,int不是Object
int[] a = new int[]{1, 2, 3};
//所以asList(a)中的a并不是作为数组,而是作为一个参数(1.5中的可变参数),打印结果[[I@5eb650]
System.out.println(Arrays.asList(a));
}
}
---------------------- ASP.Net+Android+IOS开发</a>、 .Net培训、期待与您交流! ----------------------