Java 序列化数组中的循环
示例1Java 序列化数组中的循环,java,for-loop,serialization,Java,For Loop,Serialization,示例1 Person person = (Person)os.readObject(); System.out.println(person); person = (Person)os.readObject(); System.out.println(person); person = (Person)os.readObject(); System.out.println(person);
Person person = (Person)os.readObject();
System.out.println(person);
person = (Person)os.readObject();
System.out.println(person);
person = (Person)os.readObject();
System.out.println(person);
示例2
for(int i=0;i<num;i++) {
Person person = (Person)os.readObject();
System.out.println(person);
}
我得到重复变量的错误。我认为示例3与示例2中for循环所做的事情在字面上是一样的,有人介意解释一下吗?您正在用相同的名称声明变量(非法) 试一试
可以在循环中声明变量。每次执行循环时,它都会读取变量的声明,一切正常。否则,您将无法在循环中声明变量。实际上,您只需声明一次。
但是在示例3中,您声明了三次相同的变量。实际上,您的问题不是序列化数组,而是非常基本的java知识 在示例1中,您重用了该变量,因此它是正确的。在示例3中,您试图声明一个已经存在的变量,该变量会导致编译错误。您的问题在于您对示例2的理解。在2中,代码不会在编译时或其他时间重复。创建一个代码块,该代码块在循环中执行多次 如果在块中声明变量,则该变量仅存在于该块中。在for循环的一个循环结束时,块中声明的每个变量都将被“删除”/“丢弃” 您甚至可以对变量使用“final”。样本:
public static void main(String[] args) {
final int[] samples = { 1, 3, 5, 7, 11 };
for (int i = 0; i < samples.length; i++) { // Start of block
// works because value is gone after this block
final int value = samples[i];
System.out.println(value);
} // end of block
// Won't work:
System.out.println(value);
}
publicstaticvoidmain(字符串[]args){
最终int[]样本={1,3,5,7,11};
对于(int i=0;i
请参阅我在中的评论
有关花括号如何工作的另一个示例
Person person = (Person)os.readObject();
System.out.println(person);
person = (Person)os.readObject();
System.out.println(person);
person = (Person)os.readObject();
System.out.println(person);
public static void main(String[] args) {
final int[] samples = { 1, 3, 5, 7, 11 };
for (int i = 0; i < samples.length; i++) { // Start of block
// works because value is gone after this block
final int value = samples[i];
System.out.println(value);
} // end of block
// Won't work:
System.out.println(value);
}