askPY 2024-03-14 22:27 采纳率: 60%
浏览 1
已结题

Java数组输出问题

请问为什么数组输出为地址?


package ex1;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class ex1 {
    public static void main(String[] args) {
        Solution solution=new Solution();
        System.out.println(solution.twoSum(new int[]{1,2,3,4,5,11,7,8,9},12));

    }
}

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target-nums[i])) {
                return new int[]{i, map.get(target-nums[i])};
            }
            map.put(nums[i], i);
        }
        return new int[0];
    }
}

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-14 22:28
    关注

    引自免费微信小程序:皆我百晓生

    在你提供的Java代码中,数组并没有被直接输出为地址。实际上,当你运行这段代码时,System.out.println(solution.twoSum(new int[]{1,2,3,4,5,11,7,8,9},12));会调用Solution类中的twoSum方法,并打印该方法返回的数组内容。

    然而,根据你的运行结果[I@2f4d3709来看,这确实像是一个对象的哈希码(hashCode)的十六进制表示形式,而不是数组的元素值。这是因为当你直接使用println打印数组对象本身时,toString()方法默认会被调用,而对于数组对象而言,其默认的toString()方法并不显示数组的具体元素,而是显示数组对象的类型和哈希码。

    如果你想看到数组的具体元素内容,可以使用以下方式之一:

    1. 使用Arrays.toString()方法:
    System.out.println(Arrays.toString(solution.twoSum(new int[]{1,2,3,4,5,11,7,8,9},12)));
    
    1. 或者手动遍历数组并打印每个元素:
    int[] result = solution.twoSum(new int[]{1,2,3,4,5,11,7,8,9},12);
    for (int num : result) {
        System.out.print(num + " ");
    }
    System.out.println();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 P1口接8个发光二极管,利用定时计数器1编写程序
  • ¥20 keil5编译找不到.h文件该如何解决
  • ¥15 安卓EVS如何开启服务正常实现功能
  • ¥15 canal读取mysql时报错
  • ¥15 关于 S7-PLCSIM Advanced 5.0本地TCP连接无法读写数据
  • ¥15 关于温度改变石墨烯介电性能(关键词-介电常数)
  • ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
  • ¥15 druid(相关搜索:数据库|防火墙)
  • ¥15 大一python作业
  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。