一个java类对象赋初值的简单问题,请教! 10
题如下:importjava.io.*;publicclassExample{publicstaticvoidmain(Stringargs[]){RandomAcces...
题如下:
import java.io.*;
public class Example
{
public static void main(String args[])
{
RandomAccessFile inout=null; /////------------就这不懂!
int data[]={1,2,3,4,5,6,7,8,9,10};
try{
File f=new File("F:\\","123.txt");
inout=new RandomAccessFile(f,"rw");
}
catch(Exception e)
{
System.out.println("read File error!"+e);
}
try
{
for(int i=0;i<data.length;i++)
inout.writeInt(data[i]);
for(int i=data.length-1;i>=0;i--)
{
inout.seek(i*4);
System.out.print(","+inout.readInt());
}
inout.close();
}
catch (Exception e)
{
}
}
}
这是输入输出流那章一道例题,功能是把几个int型整数写到一个名字为123.txt的文件中,然后按相反顺序读出这些数字。别的都懂,就是题中我表明的那行不懂。
RandomAccessFile类对象为什么要有初值null,把"=null"去了告我未赋初值,为什么?
书中也没说,直接就这么写了,所以迷糊,高手说下,谢了,满意追加!
是这样,前几章的例题中的对象也没用null初始化,就这个RandomAccessFile对象用了,难道像二楼说的这个对象必须显示初始化?突然出来个,所以眼生迷糊。 展开
import java.io.*;
public class Example
{
public static void main(String args[])
{
RandomAccessFile inout=null; /////------------就这不懂!
int data[]={1,2,3,4,5,6,7,8,9,10};
try{
File f=new File("F:\\","123.txt");
inout=new RandomAccessFile(f,"rw");
}
catch(Exception e)
{
System.out.println("read File error!"+e);
}
try
{
for(int i=0;i<data.length;i++)
inout.writeInt(data[i]);
for(int i=data.length-1;i>=0;i--)
{
inout.seek(i*4);
System.out.print(","+inout.readInt());
}
inout.close();
}
catch (Exception e)
{
}
}
}
这是输入输出流那章一道例题,功能是把几个int型整数写到一个名字为123.txt的文件中,然后按相反顺序读出这些数字。别的都懂,就是题中我表明的那行不懂。
RandomAccessFile类对象为什么要有初值null,把"=null"去了告我未赋初值,为什么?
书中也没说,直接就这么写了,所以迷糊,高手说下,谢了,满意追加!
是这样,前几章的例题中的对象也没用null初始化,就这个RandomAccessFile对象用了,难道像二楼说的这个对象必须显示初始化?突然出来个,所以眼生迷糊。 展开
7个回答
展开全部
定义一个随机文件流,后面有用到的,文件读取的
它在后面还是创建了实例 inout=new RandomAccessFile(f,"rw");前面赋值null只是定义而已。你可以写成RandomAccessFile inout = new RandomAccessFile(new File("F:\\","123.txt"));
输入流FileInputStream和输出流 FileOutputStream,实现的是对磁盘文件的顺序读写,而且读写要分别创建不同对象。相比之下RandomAccessFile类则可对文件实现随机读写操作。
RandomAccessFile对象的文件位置指针遵循下面的规律:
•新建RandomAccessFile对象的文件位置指针位于文件的开头处;
•每次读写操作之后,文件位置的指针都相应后移到读写的字节数;
•可以通过getFilePointer方法来获得文件位置指针的位置,通过seek方法来设置文件指针的位置。
RandomAccessFile常用方法:
skipBytes(long i):从前往后拨弄指示器的位置,就是跳过多少个字节读取数据。
Void seek(long p): 对指示器作决定性的定位,用于从后往前拨弄指示器的位置。对于seek方法,拥有skipBytes( )的功能,但seek( )在使用过程非常影响系统的开销。只有万不得已的情况下使用。
它在后面还是创建了实例 inout=new RandomAccessFile(f,"rw");前面赋值null只是定义而已。你可以写成RandomAccessFile inout = new RandomAccessFile(new File("F:\\","123.txt"));
输入流FileInputStream和输出流 FileOutputStream,实现的是对磁盘文件的顺序读写,而且读写要分别创建不同对象。相比之下RandomAccessFile类则可对文件实现随机读写操作。
RandomAccessFile对象的文件位置指针遵循下面的规律:
•新建RandomAccessFile对象的文件位置指针位于文件的开头处;
•每次读写操作之后,文件位置的指针都相应后移到读写的字节数;
•可以通过getFilePointer方法来获得文件位置指针的位置,通过seek方法来设置文件指针的位置。
RandomAccessFile常用方法:
skipBytes(long i):从前往后拨弄指示器的位置,就是跳过多少个字节读取数据。
Void seek(long p): 对指示器作决定性的定位,用于从后往前拨弄指示器的位置。对于seek方法,拥有skipBytes( )的功能,但seek( )在使用过程非常影响系统的开销。只有万不得已的情况下使用。
展开全部
RandomAccessFile inout; 只是在堆空间 定义了一个引用
RandomAccessFile inout =null ; 给了 inout 这个引用 --> null
A a = new A();
A a
引用a 是堆空间的建立一个名字a
new A();
栈空间创建一个对象
=
然后让a 指向这个对象
就是说 A a; 是只有名字 而没有实际指向的
inout=new RandomAccessFile(f,"rw"); 直接使用 就报还未实例化
RandomAccessFile inout =null ; 给了 inout 这个引用 --> null
A a = new A();
A a
引用a 是堆空间的建立一个名字a
new A();
栈空间创建一个对象
=
然后让a 指向这个对象
就是说 A a; 是只有名字 而没有实际指向的
inout=new RandomAccessFile(f,"rw"); 直接使用 就报还未实例化
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
所谓的对象是要在内存里面初始化的,不光RandomAccessFile类对象
有的对象是隐式初始化,也就是你看不大他初始化的过程,有的是显示,但是无乱是隐式或是显示,对象初始化都是必须有的,这个是规定,
是null是一种特殊的值,对象是空对象是有意义的,对象值是空的意思是说,你有这么个对象,但为指定任何实际的属性,
有的对象是隐式初始化,也就是你看不大他初始化的过程,有的是显示,但是无乱是隐式或是显示,对象初始化都是必须有的,这个是规定,
是null是一种特殊的值,对象是空对象是有意义的,对象值是空的意思是说,你有这么个对象,但为指定任何实际的属性,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 这个和try{}catch(){} 有关。。
try{里面声明的变量在} 外面是访问不到的。
所以在外面声明 在try里面赋值。
也可以都写在一个try里多写几个catch
2 在上面声明 是一些java的编写规范把。也就是代码规范哈哈。方便人读懂。
3 至于=null 的问题 方法内的变量当然要初始化啦。。如果要是类变量在
new这个类的时候java 自动初始化的所以不用=null
try{里面声明的变量在} 外面是访问不到的。
所以在外面声明 在try里面赋值。
也可以都写在一个try里多写几个catch
2 在上面声明 是一些java的编写规范把。也就是代码规范哈哈。方便人读懂。
3 至于=null 的问题 方法内的变量当然要初始化啦。。如果要是类变量在
new这个类的时候java 自动初始化的所以不用=null
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以这么理解,RandomAccessFile inout=null; 其中 inout是一个引用,它是指向一个地址,该地址中存的是null,即inout是指向某个具体的地址所以可以调用它的相应方法
而RandomAccessFile inout;其中inout也是一个引用,但它没指定任何地址,所以调用方法inout.writeInt(data[i]);时,其实是inout指向的地址所调用的方法,但因为inout没指定地址 所以会报错
而RandomAccessFile inout;其中inout也是一个引用,但它没指定任何地址,所以调用方法inout.writeInt(data[i]);时,其实是inout指向的地址所调用的方法,但因为inout没指定地址 所以会报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询