首页 > 代码库 > JAVA学习第四课(数组)
JAVA学习第四课(数组)
数组:
同一类型数据的集合,即一种容器。
定义方式:
内存的划分:
1.寄存器 -> CPU
2.本地方法区,与所在系统相关
3.方法区
4.栈内存:
存储的都是局部变量,且变量所属的作用域一旦结束,当前变量就会自动释放,所以
栈内存更新速度很快,因为栈内变量的生命周期都很短(结束就释放)。
例如:局部代码块,其限定局部变量的生命周期,在某些大程序里,main函数不结束
5.堆内存:、
数组使用小练习:
同一类型数据的集合,即一种容器。
定义方式:
int[] atrr = new int[5];//int 型数组 数组名arr ,new动态开辟 int[5],数组大小为5,只能存放5个元素,
下标0-4
内存的划分:
1.寄存器 -> CPU
2.本地方法区,与所在系统相关
3.方法区
4.栈内存:
存储的都是局部变量,且变量所属的作用域一旦结束,当前变量就会自动释放,所以
栈内存更新速度很快,因为栈内变量的生命周期都很短(结束就释放)。
例如:局部代码块,其限定局部变量的生命周期,在某些大程序里,main函数不结束
其中的变量就不释放,所以引用局部代码块。
示例代码:
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper; public class Main { public static void main(String[] args) { int[] arr = new int[6]; System.out.println(arr[1]); {//局部代码块,在{}中age有效,{}执行玩age自动释放 int age = 3; System.out.println(age); } System.out.println(); } }
5.堆内存:、
堆中存储的是对象(数组),凡是new建立的都在堆中,堆不会随时释放,堆中存储实体,实体中装载数据,数据中一个损坏,其他的数据依然可以用。而栈一个数据损坏,其他的都不使用
特点:
1.堆中每一个实体都有首地址值。
2.堆内存中每一个局部变量都有默认的初始化值,根据类型的不同,初始化值也不同,例如:int型是0,float 是0.0f\0.0,boolean 是false,char 比较特殊 ‘\u0000‘,\u 转义,unicode
3.释放方式:垃圾回收机制
如图: x = y;
null:
当不想使用arr实体时,arr是数组,若想让arr不做任何实体指向,arr = null,但是堆不会释放arr的地址,
将其视作垃圾。堆里面的垃圾是在不定时自动回收垃圾,故java在内存管理方面优于C++。
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper; public class Main { public static void main(String[] args) { int[] arr = new int[]{1,1,1,1,1,1}; System.out.println(arr[1]); arr = null;//当引用型变量没有任何实体指向时,还引用该实体,就会引发异常 System.out.println(arr[2]); } }
数组使用小练习:
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper; public class Main { public static void main(String[] args) { int[] arr = new int[5]; int [] b = new int[5]; arr[0] = 5; b[0] = 6; b[3] = 15; System.out.println("arr[0] = "+arr[0]); System.out.println("arr[3] = "+arr[3]); arr = b;//更改arr的指向 System.out.println("arr[0] = "+arr[0]); System.out.println("arr[3] = "+arr[3]); System.out.println("b[3] = "+b[3]); System.out.println("b[0] = "+b[0]); b = null;//b无指向 System.out.println("arr[0] = "+arr[0]); System.out.println("arr[3] = "+arr[3]); //System.out.println("b[3] = "+b[3]);以视为垃圾 //System.out.println("b[0] = "+b[0]); } }
import org.omg.CosNaming.NamingContextExtPackage.AddressHelper; public class Main { public static void main(String[] args) { int[] arr = new int[5]; int [] b = new int[5]; System.out.println(arr);//[I@15db9742,15db9742是arr存储的哈希值,[->数组,I -> int型 //所以,在我们不知道,当前实体是什么类型的实体时,就可以直接当前该实体的名字 } }
JAVA学习第四课(数组)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。