目录:
1 利用方法复制指定元素到新数组,并返回新数组
2 方法调用的基本内存原理
3 数据类型
4 方法传递基本数据类型的内存原理小练习
下一章(练习章节) 综合前面知识点,力扣九练
package com.itheima.demo1.fangfa;
public class test11 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7};
int[] newArr = copyOfRang(arr, 3, 7);
for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i] + " ");
}
}
//利用方法复制指定元素到新数组,并返回新数组
public static int[] copyOfRang(int[] arr, int from, int to) {
int[] newArr = new int[to - from];
int index=0;
for (int i = from; i < to; i++) {
newArr[index++] = arr[from++];
}
return newArr;
}
}
- 方法执行时,方法中定义的数据就会进栈,当这个方法结束了就会出栈,出栈数据也随之在内存中消失
- 方法执行顺序:方法执行的过程就像弹夹一样,先压进弹夹的子弹永远是最后打出的,在栈内存中也是这样,先进栈的方法会最后出栈
- 在方法中调用方法用的就是上面的原理,后被调用的方法会最先被释放
- 基本数据类型包括:整数,浮点数,布尔,字符
- 引用数据类型:除了上面的数据类型都是引用数据类型
- 引用数据类型:存储其他空间中的数据的地址,间接的引用数据
基本数据类型:存储的数据是真实的数据,还是自己的,不是地址
- 传递基本数据类型时,传递的时真实的数据,形参的改变,不影响实际参数的值
案例:
package com.itheima.demo1.javancfp;
public class test2 {
//传递基本数据类型时,传递的时真实的数据,形参的改变,不影响实际参数的值
public static void main(String[] args) {
int number = 100;
System.out.println("调用前"+number);
chang(number); //调用并传参
System.out.println("调用后"+number);
}
public static void chang(int number){
number = 200;
}
}
结果:
调用前100
调用后100
- 在方法中将值用return返回到调用处,则值才改变
- 案例:
package com.itheima.demo1.javancfp;
public class test2 {
//传递基本数据类型时,传递的时真实的数据,形参的改变,不影响实际参数的值
public static void main(String[] args) {
int number = 100;
System.out.println("调用前"+number);
number = chang(number); //调用并传参
System.out.println("调用后"+number);
}
public static int chang(int number){
number = 200;
return number;
}
}
结果:
调用前100
调用后200
- 传递引用数据类型时,地址双向值传递,两边都改变
案例:
package com.itheima.demo1.javancfp;
public class test3 {
public static void main(String[] args) {
int[] arr = {1,2,4,5};
System.out.println("调用前"+arr[1]);
change(arr);
System.out.println("调用后"+arr[1]);
}
public static void change(int[] arr){
arr[1]=200;
}
}
结果:
调用前2
调用后200