虽然,我已经为此做了一个解决方法,但是这件事仍然让我感到困惑,从逻辑上讲。
public static void main(String[] args)
{
String sent = "He is doing it good";
StringTokenizer st= new StringTokenizer(sent);
long t1 = System.currentTimeMillis();
secondMethod(st);
firstMethod(st);
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
}
public static void firstMethod(StringTokenizer st)
{
System.out.println("in first");
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
public static void secondMethod(StringTokenizer st)
{
System.out.println("in second");
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
Output of above //
in second
He
is
doing
it
good
in first
//请避免细粒度精度。
在上面的代码中,我已经意识到Java在第一次使用后删除了st。就像我首先调用 firstMethod 一样,st 可以很好地传递给该方法,我可以看到完整的标记化字符串,但在 secondMethod 中什么也没有,反之亦然。为什么这样?为什么我不能将 st 传递给不同的方法?Java新手,只是好奇这个东西到底叫什么?垃圾收集?
啊,看来我对 SO 的要求太多了。我也会尽量找时间以身作则回答问题。