在Java中,数组不会覆盖toString(),因此如果您尝试直接打印数组,则会获得className + @ + className数组的十六进制,如下所示hashCode:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
Run Code Online (Sandbox Code Playgroud)
但通常我们实际上想要更像的东西Object.toString().这样做最简单的方法是什么?以下是一些示例输入和输出:
// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]
// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
Run Code Online (Sandbox Code Playgroud) 我刚才注意到java.util.Observable是一个具体的类.由于Observable的目的是扩展,这对我来说似乎很奇怪.有没有理由以这种方式实施?
我发现这篇文章说的是
observable是一个具体的类,因此必须事先确定从中派生的类,因为Java只允许单继承.
但这并没有真正向我解释.实际上,如果Observable是抽象的,那么用户将被迫确定从中派生的类.
我有点困惑.我无法在任何地方找到答案;(
我有一个String数组:
String[] arr = ["1", "2", "3"];
Run Code Online (Sandbox Code Playgroud)
然后我将它转换为字符串:
String str = Arrays.toString(arr);
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
我期望得到字符串"123",但我得到了字符串"[1,2,3]".
我怎么能在java中做到这一点?我正在使用Eclipse IDE
我正在用char[]Java编写循环,并使用下面的示例代码:
char[] str = "Hello World !".toCharArray();
System.out.println(str.toString());
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[C@4367e003
Hello World !
Run Code Online (Sandbox Code Playgroud)
我对此有一些疑问:
什么[C@4367e003代表什么?它是一个内存地址吗?数字的含义是什么?这是什么意思[C@?
我一直以为调用println()一个对象会调用这个对象的toString方法,但似乎不是这样吗?
谢谢 !!
我有几次这个问题,我创建了另一个类文件,主类文件找不到它.这是主类文件:
package textfiles;
import java.io.IOException;
public class FileData
{
public static void main(String[] args)
{
String file_name = "Lines.txt";
try {
ReadFile file = new ReadFile(file_name);
String[] aryLines = file.OpenFile();
for(int i =0; i<aryLines.length; i++)
{
System.out.println(aryLines);
}
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是它找不到的类文件:
package textfiles;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
public class ReadFile
{
private String path;
int numberOfLines=0;
public ReadFile(String file_path)
{
path = file_path;
}
public String[] OpenFile() throws IOException
{
FileReader fr …Run Code Online (Sandbox Code Playgroud) 你能解释为什么这个代码
int[] test={0,0,0,0,0};
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)
打印像[I @ 42e816(也许是内存地址)但是这段代码
Stack<Integer> stack = new Stack<Integer>();
stack.push(1);
stack.push(3);
stack.push(5);
stack.push(2);
stack.push(4);
System.out.println(stack);
Run Code Online (Sandbox Code Playgroud)
打印"[1,3,5,2,4]"?有什么不同?
如果Stacks派生自数组中的Vectors和Vectors,那么这种不同行为的原因是什么?
考虑一个像这样的简单案例:
public static void array()
{
String myString = "STACKOVERFLOW";
int [] checkVal = new int[myString.length()];
for(int i=0; i<myString.length();i++){
checkVal[i] = (int)myString.charAt(i);
}
System.out.println(checkVal[0]);
System.out.println(checkVal[1]);
System.out.println(checkVal[2]);
System.out.println(checkVal[3]);
System.out.println(checkVal[4]);
System.out.println(checkVal);
}
Run Code Online (Sandbox Code Playgroud)
这将输出以下内容:
83
84
65
67
75
[I@fc9944
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下吗?如何从Array中检索正确的信息而不是内存分配?