【问题标题】:Extracting Characters from String in JavaJava从字符串中提取字符
【发布时间】:2014-11-21 20:44:15
【问题描述】:

我是使用 Java 编程和运行此代码的初学者

 String demo = "This is first string";
 char ch[]= demo.toCharArray();
 System.out.println(ch);

输出:

 This is first string

同时,

 System.out.println("result is "+ch);

输出:-(显示与对象内存相关的哈希码)

 result is: someHashcode

1) 为什么我们有两个不同的输出(上面提到的代码)?这里到底发生了什么。

另一方面

 int num[]={1,2,3,4};
 System.out.println(num);

输出:-

 somehashcode

2) 这不像在 char 数组的情况下那样工作(就像上面第一次提到的代码一样)并以哈希码的形式输出,为什么?

【问题讨论】:

  • 从您之前的问题来看,您似乎对accepting answer机制并不熟悉。简而言之,如果某个答案解决了您的问题,您可以将其标记为解决方案。这是一种“谢谢”机制(因为它可以将回答者的声誉提高 +15 分),并将您的问题标记为“已解决”。

标签: java string char


【解决方案1】:

PrintStream 为字符数组重载了println 方法。当您将字符数组传递给它时,它会打印其中的字符,就好像它是一个字符串一样。

但是,当您传递其他类型的数组时,它会将其视为对象 -- 它的 toString() 表示被打印出来。

在这个例子中:

System.out.println("result is "+ch);

您将数组附加到字符串文字,因此chtoString 形式将附加到文字,这就是您没有得到预期结果的原因。

【讨论】:

  • 只是为了清楚。 outSystem 类型 PrintStream 的类中的静态变量。所以它可以访问println(String)println(char[]) 方法(以及许多其他方法)。现在PrintStream#print(char[]) 方法将打印传递数组中的所有字符,但在"result is "+ch 的情况下,此代码将转换为String,而不是char[],因为当您使用+ 并且操作数之一是字符串和其他不是,compler 将通过使用 StringBuilder 连接这些值,对于非字符串对象是附加 toString() 方法的结果(对于数组返回 type@hexhash。
猜你喜欢
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 2020-06-10
  • 2018-10-25
  • 1970-01-01
相关资源
最近更新 更多