⑴ java中为什么参数传递不正确
①int pic=null这一句有错误。基本数据类型应该赋值为0,引用数据类型才被赋值为null。
②private card ic1 = new card("你好");这一句。你有对应的构造函数么?系统默认的是无参数的,你自己写的是有四个参数的。
③你的构造函数怎么是void类型?
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序。
⑵ java返回值类型不确定
你可以定义一个空的接口或者抽象类,让teacher和student都实现或者继承这个接口或者抽象类,在返回值的地方写接口或者抽象类的名字。简单点说上转型或者接口回调。
⑶ java里面声明方法里面的参数可以不确定数目吗
可以,这就是java的不定长参数,下面进行简要介绍:
先看两个简单的例子,来感受一下Java的不定长度参数
第一个例子:
public class VariArgs {
public static void main(String[] args) {
test();
test("aaa");
test("aaa", "bbb");
test("aaa", "bbb", "ccc");
}
public static void test(String... args) {
System.out.println(args.getClass());
for (String arg : args) {
System.out.println(arg);
}
}
}
第二个例子:
public class VariArgs {
public static void main(String[] args) {
test("aaa");
test("aaa", "bbb");
test("aaa", "bbb", "ccc");
}
public static void test(String arg, String... args) {
System.out.println(arg);
System.out.println("----------------");
for (String s : args) {
System.out.println(s);
}
}
}
从上面可以看出,如果一个方法的参数定为不定参数的话,这个参数可以根据参数个数动态生成一个数组,然后传入方法执行。
不过,不定参数有两个规定:第一,方法的参数列表中最多只有一个不定长度的参数;第二,就是不定长度的数组的位置必须是最后一个参数。不然不能通过编译。
对于第一个规定,是因为如果有多于一个不定长度的参数,当真正调用这个方法的时候,JVM、将不知道前面的不定长度参数有多长, 下一个参数是从哪里开始.
对于第二个参数也是一样,编译器不知道不定长度参数的长度,无法确定从哪里开始下一个参数。
⑷ java中怎样使用个数不确定的参数
public void println(String...strs){
}
⑸ JAVA方法的参数类型是不确定的该如何处理
有两种方式解决这个问题:
1、使用Object类型,因为所有类型的基类都是Object,所有类型都可以用Object表示,缺点是在使用时需要对类型进行强转,代码维护性比较差。
2、使用泛型,这是推荐做法,使用泛型让我们在方法调用时再指定类型,不需要做类型转换等操作。
⑹ java可以定义参数类型不确定的函数吗
java可以定义参数类型不确定的函数。
java 函数定义不定参数方式:
输入: public void showIconsInTitleBar(View... icons) {
if (icons.length == 0) {
return;
}
for (int i = 0; i < icons.length; i++) {
icons[i].setVisibility(View.VISIBLE);
}
}
调用此方法可以传入任意多个view。
⑺ JAVA里有没有不固定参数个数的构造函数
JDK1.5以上版本增加了不固定参数的定义方法,语法如下:public Test1(String... strs) {
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}
}
⑻ 在Java中数组作为方法的参数的一个问题。
public static int add(int[] a)和public static int add(int a[])中的参数定义是相同的,都表示int类型的不定长数组,即数组的长度不同。
ublic static int add(int...a)中的int...a在java中称作可变参数,意思是这个add方法的参数是不固定的.相关特性如下,
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。
可变参数的特点:
(1)只能出现在参数列表的最后;
(2)...位于变量类型和变量名之间,前后有无空格都可以;
(3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
publicclassVarable{
publicstaticvoidmain(String[]args){
System.out.println(add(2,3));
System.out.println(add(2,3,5));
}
publicstaticintadd(intx,int...args){
intsum=x;
for(inti=0;i<args.length;i++){
sum+=args[i];
}
returnsum;
}
可以这样认为,可变参数只是数组的一种增强型,适用于工具类的封装,比如java的层Dbutl工具类,使用PreparedStatement进行预编译sql语句时,由于占位符的数量未知,我们就可以使用可变参数来设置占位符的数量