黑马程序员技术交流社区
标题:
刚学java关于打印结果有不懂的地方
[打印本页]
作者:
ぺsimon☆
时间:
2013-5-2 16:42
标题:
刚学java关于打印结果有不懂的地方
本帖最后由 ぺsimon☆ 于 2013-5-2 23:37 编辑
import java.io.*;
class RandomAccessFileDemo
{
public static void main(String[] args)throws Exception
{
RandomAccessFile raf=new RandomAccessFile("raf.txt","rw");
raf.write("张三".getBytes());
raf.writeInt(97);
byte[] buf=new byte[4];
raf.read(buf);
/*
注意:问题在这里,谢谢各位兄弟
字符串数组和整形数组不通过循环可以把元素打印出来吗?
问题2:
这里可以把容器里的东西打印出来,而为什么数组打印出来的都是地址值呢
问题3:
我在下面覆盖了toString()方法,为什么调用无效?
toString()方法作用是什么呢?不是把字节数组变成字符串吗?
toString方法和new String(byte[] buf);,两者有什么区别呢?我用字节数
组调用toString方法,打印的结果是地址值 ,而new String();可以打印元素
*/
String s=new String(buf);
System.out.println(s);
StringBuffer sb=new StringBuffer();
sb.append("哈哈哈");
sb.append("呵呵呵");
sb.append("嘿嘿嘿");
System.out.println(sb);
int[] in={1,2,3,4,5};
System.out.println(in);
String[] s1={"aaa","ddd","abc"};
System.out.println(s1);
byte[] by={'r','m','n'};
System.out.println(by.toString());
}
public String toString()
{
return "xxxxx";
}
}
复制代码
作者:
陈圳
时间:
2013-5-2 17:28
本帖最后由 陈圳 于 2013-5-2 17:31 编辑
不通过循环可以打印出来,你可以使用Arrays.toStrin()方法完成打印输出,但它底层肯定也是通过循环来实现的.数组本身就是一种需要有序的
第二个就是:数组的toString方法返回的就是type@16进制的地址值.
你的toString只限本类对象调用有效.你想用字节数组的引用对象调用你本类的toString方法实现一个类中对象调用的能实现的效果...如果有用那就逆天了.
toString可以自字义本类对象的输出信息.
如:person类有一个姓名与性别的属性
如果你复写toString方法:"姓名:"+this.name+" 性别:"+this.sex ,就可以println输出这个信息.而不用在println()语句里修饰.
作者:
殇_心。
时间:
2013-5-2 17:34
我的理解:
第一个问题:循环是必须的。
第二个问题:数组打印出来的是地址值。这是调用Object里面的toString方法。
第三个问题:你这里的toString仅仅是RandomAccessFileDemo这个类的方法,是覆盖了Object的方法。
而你下面不是打印出你的东西,是因为byte这个类型的方法是继承Object方法。跟你的覆盖没一点关系。
如果要你的方法有效,你可以创建RandomAccessFileDemo这个类的对象。然后打印。
toString方法和new String(byte[] buf)区别:
一个是调用方法。
一个是new对象。
作者:
孙胜
时间:
2013-5-2 17:40
第一个问题:
打印数组可以这样:
T t[];
for(int i =0; i< t.length;i++)
System.out.println(t[i]);
第二个问题:
打印数组默认调用的是Object的toString方法,所以打印的是地址的哈希值
第三个问题:
你自己定义的toString方法是RandomAccessFileDemo属于这个类
所以当然没效果
作者:
ぺsimon☆
时间:
2013-5-2 23:37
谢谢各位兄弟
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2