`
lydawen
  • 浏览: 471606 次
  • 性别: 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中for(int i= 0; i<=10;i=i++)System.out.print(i);为什么无限输出0

    System.out.print(i); } } } ``` 该代码定义了一个简单的`for`循环,其中循环变量`i`初始化为0,并且循环继续进行直到`i`大于或等于10。然而,在循环的更新表达式部分,我们看到了一个不寻常的操作:`i = i++`。...

    import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int f = Integer.parseInt(br.re

    System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int f = Integer.parseInt(br.readLine()); double c=5*(f-32); c=c/9; System.out....

    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经典算法20题

    System.out.print(divisor + " * "); n /= divisor; } else { divisor++; } } System.out.println("1"); } } ``` 以上四个题目涵盖了从基础的循环和条件语句到更复杂的递归调用和算法设计,对于初学者来说...

    python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    此外,Java 中还有一个与 `System.out.print()` 类似的函数 `System.out.println()`,它们的区别在于是否在输出后添加换行。`System.out.print()` 输出时不换行,而 `System.out.println()` 则会在输出后插入一个换...

    System.Web.Extensions.dll

    Parser Error Message: Could not load file or assembly 'System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. 系统找不到指定的文件。 ...

    javaSystem.out.println()输出byte[]、char[]异常的问题详析

    Java中的`System.out.println()`是一个常用的方法,用于在控制台上打印信息。然而,当你尝试输出特定数据类型如`byte[]`或`char[]`时,它不会像预期那样直接显示数组的内容,而是输出一些看似随机的字符序列。这是...

    非常经典的java一道题

    System.out.print("请输入要祝福人的名字:"); String name = sc.next(); for (int i = 0; i &lt;= 5; i++) { for (int k = 0; k &lt;= 7 - i; k++) { System.out.print(" "); } for (int z = 1; z &lt;= 2 * i - 1; z...

    动态规划课程设计(矩阵链乘问题).pdf

    System.out.print("(");for(int p=i;p&lt;=k;p++){System.out.print(A[p] + " ");}System.out.print("| ");}System.out.print(A[len-1]);System.out.println();}public static void main(String[] args){Testsuanfa sf ...

    java编写的万年历

    public class 万年历 { ... System.out.print("请输入年份:"); int year = input.nextInt(); System.out.print("请输入月份:"); int month = input.nextInt(); //System.out.print("请输入日:");

    java简单代码

    Scanner jb=new Scanner...System.out.print("物价津贴为:"); double jt=jb.nextDouble(); System.out.print("房租津贴:"); double fz=jb.nextDouble(); System.out.print("员工薪水是:"+(gz+jt+fz)); 很普通的代码

    print-java.rar_java print

    首先,Java中的`print`方法主要存在于`System.out`对象中,它是`Console`类的一部分,我们通过`System.out.print()`来实现输出。这个方法可以打印任何类型的数据,包括基本类型(如int、double)、字符串、对象等,...

    Java基本语句(注释语句、javadoc、System.out.print和println和printf区别)复习2

    注释语句、javadoc、System.out.print和println和printf区别java特殊语句注释语句print、printf、println区别 java特殊语句 转换符 类型 d 十进制 x 十六进制 o 八进制 f 定点浮点数 e 指数浮点数 ...

    递归求平方和JAVA实现

    System.out.print("请输入一个自然数:"); s=buf.readLine();//键盘输入 n=Integer.parseInt(s); System.out.print("f(n)=1"); for(int i=2;i&lt;=n;i++) System.out.print("+"+i*i); System.out.print("="+...

    java 小程序 学习

    public static void main(String [] args) { /*int x=2,y,z=2; y=x+3; System.out.println(y);*/ //System.out.println("y="+'y'+1);... System.out.print('8'); } System.out.println(); }*/

    System.Data.SQLite.dll(sqlite_1.0.76.0.zip)

    System.Data.SQLite.dll是SQLite在.NET平台上的一个封装库,它为C#和其他.NET语言提供了对SQLite数据库引擎的全面支持。SQLite是一款轻量级、自包含的数据库系统,广泛应用于嵌入式系统和移动应用,因为它不需要单独...

    Java各章习题

    System.out.print(" * |"); for (i=1;i&lt;=n;i++) System.out.print(" "+i); System.out.print("\n---|"); for (i=1;i&lt;=n;i++) System.out.print("----"); System.out.println(); for (i=1;i&lt;=n;i++) { ...

    java实验报告 行列对齐的九九表

    System.out.print(" * |"); for (i = 1; i &lt;= n; i++) System.out.print(" " + i); System.out.print("\n---|"); for (i = 1; i &lt;= n; i++) System.out.print("----"); System.out.println(); for (i = 1; ...

    Java课程设计案例经编

    System.out.print(mycalendar1.get(Calendar.YEAR) + "年"); System.out.print(mycalendar1.get(Calendar.MONTH) + "月"); System.out.println(mycalendar1.get(Calendar.DATE) + "日"); System.out....

    java Reflection 反射机制 反编译

    System.out.print(" extends " + c.getSuperclass().getSimpleName()); Class[] inters = c.getInterfaces(); if (inters.length &gt; 0) { System.out.print(" implements "); for (int i = 0; i ...

Global site tag (gtag.js) - Google Analytics