Tong仝 2021-08-04 11:44 采纳率: 100%
浏览 35
已结题

Java传参的值能不能被改变

关于#java#的问题: 为什么下面这段代码的arr的输出值还是1234567没有被改变过,不是说传参的值是引用数据类型都是可以改变的吗
public static void rotate(int[] nums, int k) {

    while (k > 0) {
        int[] temp = new int[nums.length];
        temp[0] = nums[nums.length - 1];
        for (int i = 0; i < nums.length - 1; i++) {
            temp[i+1] = nums[i];
        }
        k--;
        nums = temp; 
    }

}
public static void main(String[] args) {
    int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7};
    rotate(arr, 3);
    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
  • 写回答

2条回答 默认 最新

  • qq_25376897 2021-08-04 12:04
    关注

    传递的参数nums 相当于是arr 引用的复制,大家指向的东西(假设叫A)是相同的,但是两者本身并不是同一个对象,你把temp赋值给nums ,也只是对nums的变化,使得nums指向变了(假设指向了B),对A又没有造成影响,那原来的arr还是指向A,自然还是原来的数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 创建了问题 8月4日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答