50分!请问个java基础问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了50分!请问个java基础问题相关的知识,希望对你有一定的参考价值。
就是看到别人定义方法的时候
在形参的那里打了3个... 是什么意思啊?
怎么用啊
能不能拜托谁给我说一下 关键是怎么用
有点像
public void method(Class... aaa)
(这个Class可以换成其他的吗? 是什么意思啊)
不定长参数的由来:
我们在调用某个方法的时候,如果事先无法决定参数的个数,例如最简单的输出语句:System.out.println();这里面是无法事先决定要给的参数的个数的,比如输出一个a1,就要写System.out.println(a1);如果输出两个,就要改为System.out.println(a1,a2);怎么解决这个问题呢?
自J2se5.0之后开始支持不定长参数(Variable-length Argument),这样就可以直接解决上述问题,来看一个范例:
public class Variable
public static int sum(int... nums) //使用...声明参数
int sum = 0;
for(int num : nums)
sum+=num;
return sum;
这个范例就介绍了不定长参数的用法,其中...就是它的标志,要加在类型关键词后面。其实仔细分析一下可知,nums就是一个数组,编译器会将参数行的(int... nums)解释为(int[] nums)。下面我们就来使用一下上面的这个使用了不定长参数的方法,代码如下:
public class TestVariable
public static void main(String[] args)
int sum = 0;
sum = Variable.sum(1,2);
System.out.println("1+2="+sum);
sum = Variable.sum(1,2,3);
System.out.println("1+2+3="+sum);
sum = Variable.sum(1,2,3,4,5);
System.out.println("1+2="+sum);
分析可知,编译器会将传递给方法的参数解释为int数组传入至sum()中,所以实际上不定长参数的功能也是自J2se5.0之后所提供的编译蜜糖(Compiler Sugar).
现在来说一下你说的情况,你说的public void method(Class... aaa) ,这个是使用对象的不定长参数,这个Class当然可以换成其他的东西了,可以换成任何能够作为参数来传递的东西,相信看了上面的话,你也早就明白了,呵呵……
最后我还要说明一下不定长参数使用时候的注意事项:
1:在使用不定长参数时,记得必须声明的参数必须设置在参数行的最后一个,来具体看几个例子:
public void someMethod(int arg1,int arg2,int... varargs) (正确的)
public void someMethod(int... varargs,int arg1,int arg2) (错误的)
2:不能使用两个以上的不定长参数,例如下面的方式是不合法的
public void someMethod(int... varargs1,int... varargs2) (不合法)
3:如果使用对象的不定长参数,声明的方法相同,例如:
public void someMethod(someClass... somes)
以上就是我所知道的不定长参数的相关知识,在这里献丑了……
如果有高人了解的更多,我愿闻其详……
最后,祝所有和我一样在自学java的兄弟们,早日出头…… 参考技术A 没遇到过 期待 好的答案。。。 关注中。。。 参考技术B 应该是书上的示例代码吧,应该不能这么用的。只是举个例子说明前面是类名后面是引用而已。 参考技术C 可变参数列表
具体看参考资料吧,很详细
参考资料:http://www.blogjava.net/Carter0618/archive/2007/08/19/137889.html
请问用java从1-33个整数中随机抽取6个数字 且不重复 该怎么写?
public static void main(String[] args)int[] x = new int[33]; //创建值为1-33的整数表, 初始化
for (int i = 0; i < x.length; i++)
x[i] = i+1;
// -------------------------------------------------
for (int i = 0; i < 6; i++) // 随机取值6次 (你可以把6改成33. 试试看会不会出现重复值)
int j = (int) (Math.random()*(33-i)); // 随机值依次递减1, 以保证不可能重复随机到33这个值
System.out.println("第" + (i+1) + "个随机数为: "+ x[j]);// 输出随机值(真正的随机值为整数表x中的数)
x[j] = x[33-i-1]; // 整数表x中已被随机到的值替换为表中最后一个数, 避免以后可能随机到
// -------------------------------------------------
// 整个思路你可以想象成是栈堆的出栈, 随机到的值出栈, 就不会随机到重复值
有问题欢迎继续提问, 希望能帮你解决问题! 参考技术A int[] n= 1,2,3.......32;//创建值为1-33的整数表, 初始化
int[] m =-1,-1,-1,-1,-1,-1;
int k=0;
main_loop:
while(k <6)
int x = (int)(Math.random()*100)%6;
for(int j=0;j <k;j++)
if(m[j]==x)continue main_loop;
m[k]=x;
k++;
System.out.println(n[x]);
以上是关于50分!请问个java基础问题的主要内容,如果未能解决你的问题,请参考以下文章