请教一个java问题,希望大虾们帮哈忙。 先看一下下面的JAVA 程序吧。

importjava.util.*;publicclassMyVectorextendsVector{publicMyVector(){super(1,1);}publi... import java.util.*;

public class MyVector extends Vector{
public MyVector(){
super(1,1);
}
public void addInt(int i){
addElement(new Integer(i));
}
public void addFloat(float f){
addElement(new Float(f));
}
public void addString(String s){
addElement(s);
}
public void addCharArray(char a[]){
addElement(a);
}

public void printVector(){
Object o;
int length=size();

System.out.println("Number of vector element is "+length+" and they are: ");
for(int i=0; i<length; i++){
o=elementAt(i);
if(o instanceof char[]){
//System.out.println(o); 不好
System.out.println(String.copyValueOf((char[]) o));
}
else{
System.out.println(o.toString());
}
}
}

public static void main(String[] args){
MyVector v=new MyVector();
int digit=5;
float real=3.14f;
char letters[]={'a','b','c','d'};
String s=new String("Hi there!");

v.addInt(digit);
v.addFloat(real);
v.addString(s);
v.addCharArray(letters);

v.printVector();
}
}

有两点我不太懂
NO.1 [ Object o ] 这里的Object属于什么啊?貌似不是老祖宗吧,希望详细解释。
NO.2 [ //System.out.println(o); 不好 ] 这里想大虾们解释一下为什么。

程序来源是一本教科书。(程序编译通过)
展开
 我来答
不敌裴南苇
2011-05-25
知道答主
回答量:48
采纳率:100%
帮助的人:24.7万
展开全部
Ooject是个基类,因为这是在方法里面,不确定会传什么参数过来所以用它来接受
o instanceof char[] 如果o是字符数组的子类,那么他有可能是个字符,也有可能是个字符数组,如果直接打印的话数组得迭代取值吧。
所以用String.copyValueOf,不管他是数组还是字符,你都把它的值拷贝出来重新组成一个字符串,这样就可以直接打印输出了。
追问
你的意思是如果 o  是字符数组就没办法一次性输出,得用  String.copyValueOf   方法吧它变为字符串(即string型变量),而如果是字符就直接调用本身的  toString()   方法进行自我输出?
感谢回答!
追答
是这样的啊
我前面还弄错了,o instanceof char[]就是判断左边的是不是右边的子类咯,是的话它就是个数组吧,你也可以用String.ValueOf方法,如果是字符的话,你的if else 条件判断不是表明了它toSting()直接输出么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一撇留痕
2011-05-26
知道答主
回答量:31
采纳率:0%
帮助的人:17.6万
展开全部
Object是所以对象的父类
然后System.out.println(o);这里o是object类型 程序显示准备打印o然后发现o是object类型,然后要自己转换类型才打印出来 ,虽然一样可以出来但是影响一定的性能
如果是System.out.println(o.toString())这样就是直接打印出被转换成string类型的o了
追问
怎么没有用 Object o=new Object();  而直接就可以使用 o 实例(与一般类类型的使用貌似反常了)?
追答
这个就是多态了   父类引用指向子类对象     就像上面的程序public class MyVector extends Vector
这个类
用的时候可以这样写
Vector v=new MyVector ();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月夜黑鹰
2011-05-25 · TA获得超过723个赞
知道小有建树答主
回答量:1198
采纳率:0%
帮助的人:823万
展开全部
Object是老祖宗啊,呵呵你悟性不错,Object是java所有对象的父类
/System.out.println的参数是String,这样的话默认用到了运算符重载,性能下降了
更多追问追答
追问
你的意思是 o 属于 Object  的一个实例? 那如果这样它有什么属性?
然后你说 System.out.println(o); 的参数是 String ,会用到运算符重载而导致性能下降,貌似不太懂。 普通的 System.out.println(".."); 不也是输出 string ,参数貌似也应该是 string (里面建立了 string 的实例吧),这两种情况难道有差别??
还是感谢你的回答!
追答
它有什么属性.你可以在eclipse中.出来的
System.out.println(".."); 是输出 string啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式