zoukankan      html  css  js  c++  java
  • 关于字符数组cs.toString和new String(cs)的问题

    总结写在前面:

         int[] a={0, 1, 1, 2, 8, 4, 9};
    System.out.println(String.valueOf(a));-----类型+句柄 System.out.println(a.toString());----------类型+句柄 System.out.println(Arrays.toString(a));----[0, 1, 1, 2, 8, 4, 9] System.out.println(
    new String(a));------参数错误 char[] ss={'1','2','3','4','5'}; System.out.println(String.valueOf(ss));---12345的字符串 System.out.println(new String(ss));-------12345的字符串 System.out.println(ss.toString());--------类型+句柄 System.out.println(Arrays.toString(ss));---[1, 2, 3, 4, 5]
    综上,
    对于char[]和int[]想要获得[ , , ]形式,使用Arrays.toString()即可
    想要获得字符串类型,char[]可选择 new String( ),或者String.valueOf()
    int[] 只能使用for循环了。

    String.valueOf()本质也是toString,只不过可接受Null,参数有各种基本类型及 char数组,返回字符串的表现形式

    做Leetcode,345. Reverse Vowels of a String

    思路完全正确,结果却一直不对

    System.out.print(cs.toString);

    还是奇奇怪怪的结果

    像:[C@15db9742或者[C@15db9742等等

    改成 System.out.print(new String(cs));就对了

    首先:明确toString()是Object类的方法,所以所有类创建的时候都有这个方法并能够调用

    同时:java输出用的函数print();是不接受对象直接输出的,只接受字符串或者数字之类的输出。

    当System.out.print(XXXX); 当XXXX不是字符串或者数字的时候,此时可以编译成功,

    但是运行时因为不满足条件,就会去调用这个对象类里面的toString 方法,输出结果为[类型@哈希值]

    所以,不管有没有XXX.toString(),何况还特意toString()了

    看一下Object里面toString()源码

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

    正如前面出现的问题,由于数组类中没有对此方法重写(override),仅仅是重载(overload)为类的静态方法(参见java.util.Arrays)。

    所以,数组直接使用toString()的结果也是[类型@哈希值]。

    ****最终****

    三种方式数组转化字符串

    char[] cs={'a','b','c','d'};
    Array.toString(cs);-------这种是[a,b,d,d]这种格式的
    
    String.valueOf(cs);
    String str=new String(cs);-----最最最正常的啦
    ---------这种就是很正常的 abcd 的了

     4/10补充:

    [a,b,d,d]这种格式可以直接打印下面的
       List<Integer> ret = new ArrayList<Integer>();
    Array.toString(cs);
     如果是数字数组的话,,还是乖乖的循环吧
  • 相关阅读:
    Yii2的深入学习--事件Event
    PHP的学习--可变函数
    PHP的学习--可变变量
    Yii2的深入学习--yiiaseObject 类
    xdotool模拟击键和鼠标移动
    Yii2的深入学习--继承关系
    Yii2的深入学习--自动加载机制
    用Qt写软件系列五:一个安全防护软件的制作(1)
    TinyOS和Deluge的安装模拟(二)
    TinyOS和Deluge的安装模拟(一)
  • 原文地址:https://www.cnblogs.com/Cherrylalala/p/6677673.html
Copyright © 2011-2022 走看看