zoukankan      html  css  js  c++  java
  • java中数组是不是对象?

    [转自知乎]:http://www.zhihu.com/question/26297216

    JAVA中的数组是对象吗?

    public class test {
    public static void main(String[] args) {
        int a[]={1,9};
        System.out.println(a.toString());
        
    }
    }
    
    Sunny,软件工程/CS心/不怎么会写代码/羡慕会讲…

    很久没有碰过Java了,尝试回答下
    首先上答案,数组是对象。
    为什么呢,因为权威的Java Language Specification是这么说的:

    In the Java programming language, arrays are objects (§4.3.1), are dynamically created, and may be assigned to variables of type Object (§4.3.2). All methods of class Object may be invoked on an array.

    但是这个数组对象并不是从某个类实例化来的,而是由JVM直接创建的,因此查看类名的时候会发现是很奇怪的类似于"[I"这样的样子,这个直接创建的对象的父类就是Object,所以可以调用Object中的所有方法,包括你用到的toString()。
    所以你的问题就很明显了,因为调用的toString()方法是来自于Object的,楼上的 @YEAH已经说过了,这个方法的实现是

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    

    所以就打出了类似于[I@15db9742这样的稀奇古怪的数字。
    如果要输出“{1,9}”这样的内容,可以写一个循环逐个输出,或者使用Arrays.toString()输出

  • 相关阅读:
    时间复杂度
    随机数生成
    promise封装异步函数
    谷歌浏览器占用cpu过高,如何解决?
    大二层网络
    kubernetes 二进制安装部署手册
    SeaWeedfs 分布式网络文件存储介绍
    seaweedfs基本使用
    SeaweedFS基本介绍
    Linux下shell通用脚本启动jar(微服务)
  • 原文地址:https://www.cnblogs.com/westward/p/5260967.html
Copyright © 2011-2022 走看看