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())

  • 相关阅读:
    windows8开发学习笔记
    文字超出隐藏并显示省略号
    list-style-type -- 定义列表样式
    抄录:系统集成项目管理42个子过程
    系统集成项目管理工程师--总结(4章)
    系统集成管理项目工程师总结--口诀2(包含1)
    系统集成管理项目工程师总结--法律法规日期篇1
    关于EAI(一个同学问了我很可爱的问题所以查到的这些)要看看
    系统集成项目管理工程师计划
    中级
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7124026.html
Copyright © 2011-2022 走看看