
居然 整个楼里面都答非所问了 看我的看我的哦 提问者都说的这么清楚了
这个问题很好
日常使用不定参数时候基本是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是所有类的基类,这个你可以查询jdk文档了解,所有类都继承自Object。
1.Object类是所有类的父类,位于java.lang包中。
2.数组也是Object类的子类。
3.Object类的常用方法有:
toString()
equals()
hashCode()
objects这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用objects这样的参数形式,允许一切继承自Object的对象作为参数。这种方法在实际中应该还是比较少用的。
obj这样的形式,就是一个Object数组构成的参数形式。说明这个方法的参数是固定的,是一个Object数组,至于这个数组中存储的元素,可以是继承自Object的所有类的对象。
这些基础东西应该多看几遍"Think in java"。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)