• Java_引用变量


    目录

    1.认识 null

    ​编辑 2.数组的应用

    3.数组作为函数的参数 

     4.数组作为函数的返回值

     5.数组练习

    数组转字符串

     6.数组拷贝

     (1)通过函数Arrays.copyOf()进行拷贝:

     (2)通过函数System.arraycopy()进行拷贝: 

    (3)拷贝范围Arrays.copyOfRange()

    (4)比较两个数组是否相等Arrays.equals()

    (5)对数组进行填充Arrays.fill()

     7.深浅拷贝

    8.在数组中查找一个元素

    1.认识 null

    null 在 Java 中表示 "空引用" , 也就是一个不指向对象的引用。

     2.数组的应用

    3.数组作为函数的参数 

    参数传类型(引用数据类型)

    总结:当数组作为参数进行传递的时候,其实还是按值传递的,只不过传递的值是一个地址。那么会出现两种情况:

    1.形参改变指向:array = new int[10];只会影响形参的指向。

    2.形参修改指向对象的值:array[0] = 9;此时才会影响实参。 

     4.数组作为函数的返回值

     

     5.数组练习

    数组转字符串

    1. public static String myToString(int[] array) {
    2. if (array == null) {
    3. return "null";
    4. }
    5. String ret = "[";
    6. for (int i = 0; i < array.length; i++) {
    7. ret += array[i];
    8. if (i != array.length - 1) {
    9. ret += ", ";
    10. }
    11. }
    12. ret = ret + "]";
    13. return ret;
    14. }
    15. public static void main(String[] args) {
    16. int[] array = {1,2,3,4};
    17. System.out.println(myToString(array));
    18. }

     6.数组拷贝

    1. //数组拷贝
    2. public static void main(String[] args) {
    3. int[] array = {1,2,3,4};
    4. int[] array2 = new int[array.length];
    5. for (int i = 0; i < array.length; i++) {
    6. array2[i] = array[i];
    7. }
    8. System.out.println(Arrays.toString(array));
    9. System.out.println(Arrays.toString(array2));
    10. }

     (1)通过函数Arrays.copyOf()进行拷贝:

    1. public static void main(String[] args) {
    2. int[] array = {1,2,3,4};
    3. //可以当作扩容
    4. int[] ret = Arrays.copyOf(array, array.length);
    5. System.out.println(Arrays.toString(array));
    6. System.out.println(Arrays.toString(ret));
    7. int[] ret2 = Arrays.copyOf(array, array.length*2);
    8. System.out.println("--------------------");
    9. System.out.println(Arrays.toString(ret2));
    10. }

     

     (2)通过函数System.arraycopy()进行拷贝: 

    1. public static void main(String[] args) {
    2. int[] array = {1,2,3,4};
    3. int[] copy = new int[array.length];
    4. System.arraycopy(array, 0, copy, 0, array.length);
    5. System.out.println(Arrays.toString(array));
    6. System.out.println(Arrays.toString(copy));
    7. int[] copy2 = new int[array.length];
    8. System.arraycopy(array, 1, copy2, 1, array.length-1);
    9. //从array数组下标为1的元素开始拷,只能拷3个,所以长度-1
    10. System.out.println(Arrays.toString(copy2));
    11. }

    1. import java.util.Arrays;
    2. public static void func(){
    3. // newArr和arr引用的是同一个数组
    4. // 因此newArr修改空间中内容之后,arr也可以看到修改的结果
    5. int[] arr = {1,2,3,4,5,6};
    6. int[] newArr = arr;
    7. newArr[0] = 10;
    8. System.out.println("newArr: " + Arrays.toString(arr));
    9. // 使用Arrays中copyOf方法完成数组的拷贝:
    10. // copyOf方法在进行数组拷贝时,创建了一个新的数组
    11. // arr和newArr引用的不是同一个数组
    12. arr[0] = 1;
    13. newArr = Arrays.copyOf(arr, arr.length);
    14. System.out.println("newArr: " + Arrays.toString(newArr));
    15. // 因为arr修改其引用数组中内容时,对newArr没有任何影响
    16. arr[0] = 10;
    17. System.out.println("arr: " + Arrays.toString(arr));
    18. System.out.println("newArr: " + Arrays.toString(newArr));
    19. // 拷贝某个范围.
    20. int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);
    21. System.out.println("newArr2: " + Arrays.toString(newArr2));
    22. }

    (3)拷贝范围Arrays.copyOfRange()

    1. public static void main(String[] args) {
    2. int[] array = {1,2,3,4,5};
    3. int[] ret = Arrays.copyOfRange(array, 1, 3);//[1,3)
    4. System.out.println(Arrays.toString(array));
    5. System.out.println(Arrays.toString(ret));
    6. }

    (4)比较两个数组是否相等Arrays.equals()

    1. public static void main(String[] args) {
    2. int[] array1 = {1,2,3,4,5};
    3. int[] array2 = {1,2,3,4,5};
    4. System.out.println(Arrays.equals(array1,array2));
    5. }

    (5)对数组进行填充Arrays.fill()

    1. public static void main(String[] args) {
    2. int[] array = new int[10];
    3. Arrays.fill(array, 3);
    4. System.out.println(Arrays.toString(array));
    5. }

     局部赋值:

    1. public static void main(String[] args) {
    2. int[] array = new int[10];
    3. Arrays.fill(array, 3);
    4. System.out.println(Arrays.toString(array));
    5. //局部赋值——将4~7的位置赋值为9
    6. Arrays.fill(array, 3, 7, 9);//[3,7)
    7. System.out.println(Arrays.toString(array));
    8. }

     (6)数组名.clone()——>产生一个副本

    1. public static void main(String[] args) {
    2. int[] array1 = {1,2,3,4,5};
    3. int[] array2 = array1.clone();
    4. System.out.println(Arrays.toString(array1));
    5. System.out.println(Arrays.toString(array2));
    6. System.out.println("-----------------------");
    7. array2[0] = 100;
    8. System.out.println(Arrays.toString(array1));
    9. System.out.println(Arrays.toString(array2));
    10. }

     7.深浅拷贝

    8.在数组中查找一个元素

    1. public static int find(int[] array, int val) {
    2. for (int i = 0; i < array.length; i++) {
    3. if (array[i] == val) {
    4. return i;
    5. }
    6. }
    7. return -1;
    8. }
    9. public static void main(String[] args) {
    10. int[] array = {1,2,3,4,5};
    11. int ret = find(array, 2);//这个方法效率极低
    12. System.out.println(ret);//1(下标为1)
    13. }
  • 相关阅读:
    RSS订阅微信公众号初探-feed43
    LeetCode 362 期周赛
    基于PSO粒子群算法的MPPT最大功率跟踪Simulink仿真,PSO采用S函数实现
    线性代数的本质(七)——特征值和特征向量
    YOLOv8更换骨干网络HorNet:递归门控卷积的高效高阶空间交互——涨点神器!
    ubuntu20.04.1网络图标突然消失,无法上网
    找到实现虚实结合的正确的方式和方法,并且让区块链的功能和作用得到最大地发挥
    HarmonyOS interface router scale pageTransition SlideEffect.Left ArkTS ArkUI
    ROSCAR试运行
    iOS图片复制指南:在iPhone和iPad上的照片复制与编程
  • 原文地址:https://blog.csdn.net/m0_68071216/article/details/127746129