zoukankan      html  css  js  c++  java
  • ArrayList集合--关于System.out.print(Object obj);的理解

    1.ArrayList集合中常用的方法
    ArrayList<Student> stuArrayList = new ArrayList<>(); //定义一个集合对象
    stuArrayList.add();    //添加元素
    stuArrayList.add(index, e):    //在某个位置添加元素,但不覆盖原元素
    stuArrayList.get(index):    //获取某位置的元素
    stuArrayList.size():    //获取集合长度
    stuArrayList.remove(""):    //删除某元素
    stuArrayList.remove(index):    //删除某位置元素
    stuArrayList.set(index,e):    //用e覆盖某位置元素


    2.一个问题点:
    ArrayList<String> list = new ArrayList<>();
    System.out.println(list);  //打印结果为空,并不是地址值,因为底层作了toString转换。
    /*println(obj)接收到obj参数时,会判断obj是否为空,如果为空,则输出null;若不为空,则调用Object的toString(),
    返回的是"类名(利用反射获取)@哈希散列特征码(调用hashCode()方法,如果覆写就用覆写后的,如果没覆写就用本地的(c语言写的,jdk未提供耗源码))"*/

    int []arr = new int[2];
    syso(arr)://打印结果为内存地址

    二.关于System.out.print(Object obj);的理解
    1.System调用其类属性out,而out又是PrintStream类型,所以out可以调用类PrintStream的方法print.
    2.调用print()打印Object时,会判断Object是否为空,如果为空,输出null;如果非空,调用Object的toString().
    3.如果toString()方法被覆写,那就调用覆写后的;如果没有被覆写,就用自身的,自身的方法是用反射获取类名称,
         然后拼接一个"@",再调用hashCode()方法,并将其返回值变为16进制字符串.
    4.如果hashCode()被覆写了,就调用覆写后的,输出后为哈希散列特征码;如果没有被覆写,就用自身的,
         这个自带的hashCode()实现的逻辑是本地代码,JDK源码并末提供.输出为地址值.

    附:
    public void print(Object obj)--java.io.PrintStream
         The string produced by the String.valueOf(Object) method is translated into bytes
    public String toString()--- java.lang.String
         getClass().getName() + '@' + Integer.toHexString(hashCode())

  • 相关阅读:
    PMP考试结束了,期待结果中。。。
    Windows Server 2008安装及配置Terminal Server
    CMMI分段式级别的易理解版本
    c# RoundUp函数
    管理学中的知名定律之阿尔布莱特法则
    Risk Categories
    如何躲开“责任”的逆袭
    一次失败的聚会
    【老孙随笔】属相影响你的职业前途吗?
    项目经理的超越(三)人际优先,做事上的超越
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7124026.html
Copyright © 2011-2022 走看看