-
Java中的内存分配以及栈和堆的区别
-
(1)栈: 存放的是局部变量
局部变量:在方法定义中或者方法声明上的变量都是局部变量。 -
(2)堆: 存放的是所有new出来的东西
特点:
a: 每一个new出来的东西都会为其分配一个地制值。
b: 每一个变量都有一个默认的值byte,short,int,long -- 0 float,double -- 0.0 char -- '\u0000' boolean -- false 引用数据类型 -- null
c: 使用完毕就变成了垃圾,等待垃圾回收器对其回收
-
(3)方法区:(面向对象部分讲解)
-
(4)本地方法区:(和系统相关)
-
(5)寄存器:(cpu使用)
-
-
数组的初始化静态初始化及内存图
(1)静态初始化的格式:
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
举例: int[] arr = {1,2,3};
(2)画图演示
a:定义一个数组,输出数组名称和数组中的元素值 -
数组操作的两个常见小问题越界和空指针
a:ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
b:NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。 -
Java中的参数传递问题及图解
A:案例演示
public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a: " + a + ",b: " + b); change(a,b); System.out.println("a: " + a + ",b: " + b); int[] arr = {1,2,3,4,5}; change(arr); System.out.println(arr[1]); } public static void change(int a,int b) { System.out.println("a: " + a + ",b: " + b); a = b; b = a + b; System.out.println("a: " + a + ",b: " + b); } public static void change(int[] arr){ for(int x = 0 ; x < arr.length ; x++){ if(arr[x]%2 == 0){ arr[x] *= 2; } } }
Java中的内存分配以及栈和堆的区别
猜你喜欢
转载自blog.csdn.net/qq_43141904/article/details/82990319
今日推荐
周排行