java中Object... 的用法是什么意思?
居然 整个楼里面都答非所问了 看我的看我的哦 提问者都说的这么清楚了
这个问题很好
日常使用不定参数时候基本是Object...可以等同于 Object[] obj一维数组理解的
数组本质是连续的指针地址 其中数组的头指针是必须的 但是二者的不同在于何处呢?
很明显
Obj...是针对方法传入参数的 即只能在method()内使用
即 不定参数只能作为方法的形参,不能用作变量
然后你看我建立2个test犯法
然后你看我用这些方法
什么意思呢 看到编译器报错了?
public viod method(Object[] obj)
必须传入已经初始化的数组 而已经初始化的数组是定常度的 所以实际没有实现真正的变长度参数
而
public viod method(Object...) 直接传入内容即可 其中的OBJ...对象是存在指针的
你看我运行一下 控制台打印的text text1 传入的 Sring[]a指针地址
java的 数组结构在jvm的堆和栈上是不同的 但是我个人没有理解这问题如果提问者了解欢迎回复我
有关不定参数的使用
public viod method(Object[] obj,Object...) {
Obj操了自己;
}
不过,不定参数有两个规定:第一,方法的参数列表中最多只有一个不定长度的参数;第二,就是不定长度的数组的位置必须是最后一个参数。不然不能通过编译。
Object的出现多用在多态上,目的就是使编写的程序有更大的通用性。
例子:
public class 动物类{
.......
}
public class 猫类 extends 动物类{
public string 叫声;
.......
}
public class 狗类 extends 动物类{
public string 叫声;
........
}
这里,猫类和狗类都是动物类的子类
现在我们有一个类,这个类有一个方法,要求打印猫的叫声
public class 猫叫声类{
public void jiao(猫类 mao){ //这里有一个猫类对象作为参数
System.out.println(mao.叫声);//这样就可以获得猫类的叫声属性
}
}
现在我们有一个类,这个类有一个方法,要求打印狗的叫声
public class 狗叫声类{
public void jiao(狗类 gou){ //这里有一个狗类对象作为参数
System.out.println(gou.叫声);//这样就可以获得狗类的叫声属性
}
}
看到这里,是不是发现点什么问题了。这两个类几乎是完全相同的,就是jiao这个方法的参数不同,分别是猫和狗。那我们有没有什么办法,使这个类中的方法适合这两种情况呢,你是猫,我就打印猫的叫声,你是狗我就打印狗的叫声,这样不就方便多了吗?
这个就是父类对象的好处了。
public class 叫声类{
public void jiao(动物类 dongwu){ //这里有一个动物类对象作为参数
System.out.println(dongwu.叫声);//这样就可以获得具体类的叫声属性
} //这地方有一个多态的性质,你相应的
} //看这节内容
这个类写完,如果你穿过来的参数是一个狗类,大舅打印狗的叫声,如果你穿过来的是一个猫类,他就打印猫的叫声。
现在你应该明白,父类引用其实就是为了程序更加通用,这里举得是我们自定义的一个类。
object是所有类的父类,其思想和这个例子完全一样,好好理解一下,具体的你可以看继承和多态这两节,看完这两节那对这个知识就非常明白了!
Object ...objects这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用Object ...objects这样的参数形式,允许一切继承自Object的对象作为参数。这种方法在实际中应该还是比较少用的。
Object[] obj这样的形式,就是一个Object数组构成的参数形式。说明这个方法的参数是固定的,是一个Object数组,至于这个数组中存储的元素,可以是继承自Object的所有类的对象。
这些基础东西建议你多看几遍"Think in java"
希望我的回答对你有所帮助。
事例代码如下:
public class Demo2 {
private static int x = 1;//定义一个int型变量
public static void main(String[] args) {
System.out.println(a());
}
private static Object a(){//此返回Object类型的值
return x;//结果一个int型变量也可以
}
}
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。