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

  • 相关阅读:
    Task10 文本预处理
    Task09 批量归一化
    Task06 Basic of CNN
    Task05 梯度消失和梯度爆炸
    Task 04 过拟合,欠拟合及其解决方案
    机器学习 Task 03 多层感知机
    机器学习 task2 softmax与分类模型
    异步与闭包与fetch
    baidu API
    my own JSON
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7124026.html
Copyright © 2011-2022 走看看