• 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. }
  • 相关阅读:
    Jmeter--简单的快捷键设置
    mac上搭建istio环境
    基于SSM实现的艺术品鉴定管理系统+App
    IO的阻塞和非阻塞、同步和异步
    H3C 交换机配置SSH
    leetcode1两数之和
    非饱和激活函数ReLu为什么比饱和激活函数sigmoid、tanh好
    双十一报告:服饰企业借助团队管理工具飞项高效协作
    KubeSphere DevOps 流水线入门指南
    Photoshop 2023:重塑创意,引领数字艺术新纪元
  • 原文地址:https://blog.csdn.net/m0_68071216/article/details/127746129