`
lydawen
  • 浏览: 476146 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

System.out.print(anArray) anArray=char[] 及anArray=int[] 的区别

    博客分类:
  • java
 
阅读更多

 无意看到有人在问,为什么

 

char[] ca={'1','2','3'};
int[] ia={1,2,3};
System.out.print(cs);
System.out.print(ia);
 

得到是截然不同的结果,char[]输出了数组元素而int[]输出了引用地址,怀着好事心情,跟进一看System.out的这个out定义为:

 

public final static PrintStream out = nullPrintStream();

 接着看PrintStream的print/println存在较多的重载,比较眼尖一下就看到print(char[] s[])以及print(Object x),未看到针对其它类型数组的重载,至此至少发现是这区别导致不同的输出结果。

  如你所知,数组也是Object,对于非char[]类型数组,都使用print(Object x),这个方法最终使用的是String.valueOf(x),即x.toString(),所以对于非char数组输出引用地址就不中为奇了。

   对于print(char[] s),跟到最后发现是使用 sun.nio.cs.StreamEncoder.write(char[] cbuf, int off, int len)方法,配合CharBuffer来完成的,具体可以查看该方法实现。

   是否有其它方法让非char[]数组也能便捷的输出元素呢,当然,使用java.utils.Arrays.toString(x);即可

 

 

 

分享到:
评论

相关推荐

    Java大学教程

    import java.util.*; // a menu driven program to test a selection of useful array methods public class SomeUsefulArrayMethods ... System.out.println("array[" + i + "] = " + arrayIn[i]); } } }

    JAVA 输入与输出.pdf )

    System.out.print((char) b[i]); } System.out.println("\nTo an OutputStream()"); // 输出到文件 test.txt 中 OutputStream f2 = new FileOutputStream("test.txt"); f.writeTo(f2); f2.close(); ...

    Java认证题库OCJA.docx

    System.out.print(array[0] + ":" + array[1]); } } ``` **题目:** 哪个代码片段插入到第3行可以使代码打印出`10:20`? **选项:** A. `int[] array = new int[2];` B. `int[] array; array = int[2];` C. `...

    java培训第十三天笔记.pdf

    declares an array scores of type int with a size of 5. 在本节笔记中,我们学习了Java语言的基本概念和语法,掌握了基本数据类型、变量、运算符、控制结构、函数和数组等内容,为后续学习Java语言奠定了基础。

    esp8266 mp3

    //Routine to print out an error static enum mad_flow ICACHE_FLASH_ATTR error(void *data, struct mad_stream *stream, struct mad_frame *frame) { printf("dec err 0xx (%s)\n", stream->error, mad_stream_...

    VB6-to-VBNET

    ##### 25.0 Creating an array out of a string 在VB.NET中,可以使用`Split`方法将字符串分割成数组。 例如,将字符串分割为数组: ```vb.net Dim str As String = "one,two,three" Dim arr() As String = str....

    Bochs - The cross platform IA-32 (x86) emulator

    - Print detailed page walk information and attributes in internal debugger 'page' command - Updated/Fixed instrumentation callbacks - Configure and compile - Bochs now can be compiled as native ...

Global site tag (gtag.js) - Google Analytics