数组
java中,数组其实也是一个数据类型,数组也是编程语言中比较常见的一种数据类型,用于储存多个数据,每个数组元素存放一个数据,通常可以通过数组元素的索引访问数组元素,包括为元素赋值和取出数组中元素的值。
简单理解数组
java中的数组要求一个数组内只能存储一种数据类型,因为java是面向对象的所以我们之前说到了面向对象的多态性,所以这里的类型引用可以是父类,实例的子类。(即:水果类作为引用,苹果实例,草莓实例,香蕉实例),而且java的数组一旦初始化完成,数组的内存中所占的空间将被固定下来,因此数组的长度是不可变的。就算把它数据清空,它所占用的大小一样是这么大。
数组可以储存基本数据类型,也可以储存引用数据类型。
定义数组的语法: type[] arrayName 或者 type arrayName[] 注意:定义数组时不能指定数组的长度 例如: type [4] arrayName
数组的初始化
java语言中数组必须要初始化才可以使用,所谓的初始化,就是为数组的所有元素都分配内存空间,并为每个数组元素都赋值初始值。
数组的初始化有两种方式:
静态初始化:初始化时由程序员显式指定每个元素的初始值,由系统决定长度。
动态初始化:初始化时由程序员指定长度,系统默认初始值。
public static void main(String[] args) { //静态初始化语法: arrayName = new type[]{element1,element2,element3.....} String [] _strs = new String[]{"静","态","初","始","化"}; //动态初始化语法: arrayName = new type[length] Object[] _strsObject = new String[5]; }
注意不要同时使用静态初始化和动态初始化,也就是在数组初始化时不要既指定它的长度又为每个元素分配初始值。
数组的使用
访问数组元素是通过数组引用变量后紧跟一个'[]' ,方括号中是数组中的数组元素的索引。java语言中的索引是从0开始的,也就是说,索引的开始是0 结束是长度-1。
//我们定义一个长度为5的String类型的数组 String [] _strs = new String[]{"str_1","str_2","str_3","str_4","str_5"}; System.out.println(_strs[1]);//打印结果为 str_2 _strs[1] = "我被改变了"; System.out.println(_strs[1]);//打印结果为 我被改变了 //配合for循环使用数组 for(int i =0 ;i<_strs.length;i++){ System.out.println(_strs[i]); } //循环遍历了数组中的所有元素按照顺序打印了一遍 同样赋值也可以这么做
深入数组
这里说下堆内存(heap)与栈内存(stack)
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个被放入这块栈内存中,伴随方法的结束, 这个方法的内存栈也将被自 然销毁。因此呢,所以在方法中的定义的局部变量都是放在栈内存的;在程序中创建一个对象的时候,这个对象将被保存到运行时数据区中,以便于重复利用 (因为对象的创建成本通常较大说到这就能理解懒加载的重要性),这个运行时数据区就是堆内存。堆内存的对象不会随着方法的结束而销毁,即使方法结束后, 这个对象还可能被另外一个引用变量所引用(在方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的 垃圾回收器才会在合适的时候回收它。