当前位置: 首页 > 面试题库 >

在Java中打印char和int数组之间的区别

穆智刚
2023-03-14
问题内容

当我运行以下代码时,我得到了数组的地址:

int arr[] = {2,5,3};
System.out.println(arr); // [I@3fe993

但是,当我声明一个字符数组并以相同的方式打印它时,它将为我提供数组的实际内容。为什么?

char ch[] = {'a','b','c'};
System.out.println(ch); // abc

问题答案:

PrintStream(即类System.out)具有专用的方法重载println(char[]),可打印char数组的字符。

对于其他数组,它没有特殊的重载,因此,当您传递时,int[]调用的方法是println(Object)。该方法通过调用其toString()方法将传递的对象转换为字符串。

toString()所有数组的方法都只是从classObject继承的默认数组,它显示了它们的类名和默认哈希码,这就是为什么它不够有用的原因。您可以Arrays.toString(int[])用来获取int数组内容的字符串表示形式。



 类似资料:
  • 问题内容: 我最近一直在思考定义数组的两种方式之间的区别: 问题答案: 它们在语义上是相同的。添加该语法只是为了帮助C程序员习惯Java。 更可取,并且不会造成混淆。

  • 问题内容: 我最近一直在思考定义数组的两种方式之间的区别: 有区别吗? 问题答案: 它们在语义上是相同的。添加该语法只是为了帮助C程序员习惯Java。 更可取,并且不会造成混淆。

  • 当我试图打印未初始化的静态字符数组时,它会给出运行时错误(Null指针异常),而未初始化的静态int数组会给出Null值。为什么?

  • 在Java中,可以使用char值或ASCII值将转换为,反之亦然。如果将int变量强制转换为char,则会得到相应的字符。因此,以下代码段将打印“a”: 但当我这么做的时候: 编译器输出int值97,而不是'a',即使'true side'上的三元运算符返回值是(char)ch2。所以我期待的是“a”,而不是97。为什么它打印97而不是'a'?

  • 问题内容: 我正在尝试用Java格式化两个数组以打印如下内容: 我正在使用以下代码: 但是我得到的是格式不正确的结果: 如何将所有列直接排列在顶部标题的下面? 有没有更好的方法可以做到这一点? 问题答案: 您应该看一下格式: 这将提供15个插槽,并在需要时在其中填充空格。 但是,我注意到您没有对数字进行右对齐,在这种情况下,您需要在书本字段中左对齐: 这是一个工作片段示例: 导致:

  • 问题内容: 我只是想知道为什么范围是用我的sql数据类型给出的。我定义了一个字段名称为“ id”且数据类型为“ int(2)”的表。我将值插入字段“ id”作为“ 123456”。这被接受并存储。那么给出范围的用途是什么。 提前致谢。 问题答案: 对于和其他类型,该属性仅指定显示宽度。 请参阅MySQL文档中的数字类型属性: MySQL支持扩展,可以选择在整数类型的基本关键字之后的括号中指定整数数