「java参数中...」java参数中带冒号
本篇文章给大家谈谈java参数中...,以及java参数中带冒号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中的参数
- 2、Java中的...是什么意思
- 3、java中参数的具体意义跟作用是什麼啊?
- 4、java 中,方法参数为(string...names)什么意思
- 5、java 参数中含有… 是什么意思啊
java中的参数
try,catch是一个语句对,catch用来捕获try块中抛出的异常exception,而Exception是Java中所有异常的基类,它实现了Thorwable接口,两者都能够通过throw来抛出。
至于e,它代表的是本次捕获到的异常对象。
另外
system.out.println("e.getMessage()")打印的是e.getMessage(),我的原意是打印出e.getMessage()的内容,所以应该将双引号去掉
Java中的...是什么意思
如果是是形参 里面出现,表示的是可变参数
比如:
//表示的传入的参数可以随意,你传多少个参数都被放到一个数组里面。
public static void dealArray(int...intArray) {
for(int i: intArray)
{
System.out.print(i +" ");
}
System.out.println();
}
java中参数的具体意义跟作用是什麼啊?
参数的作用,简单说来,就是将传入参数加入到程序处理流程。
比如说写一个简单的方法
public
int
calculate(double
number){
//number
就是一个double类型的参数,它关系到这个方法计
//算的结果
return
number*
2;
}
调用的时候直接产生这个类的对象,比如说是a
就用
a.calculate(2.0);就可以,传入参数为2.0
java 中,方法参数为(string...names)什么意思
为字符串类型的可变长参数,意思是,形参可以是1个也可以是多个,处理类似与数组
java 参数中含有… 是什么意思啊
main方法的签名其实可以这样写:
public static void main(String... args)//方法1
它也可以运行.
并且,如果同时还存在
public static void main(String[] args)//方法2
会报已经存在重复的方法的错误.
由此可见,String... args跟String[] args对于虚拟机来说其实是一回事.
而且,在方法内,通过...传进来的参数的使用方法也跟一个数组完全无二,可以for循环,甚至可以直接转换:
public static void main(String... args)
{
String[] ss=args;
}
但对于程序员来说却还是有差别的.
1.调用
我们只能这样调用方法2:
main(new String[]{});
即,方法2只能接受String数组做参数.
而我们陌生的方法1可强了,用以下参数调用,照单全收:
main();
main(null);
main(null,null);
main(null,null,null);
......
main("a");
main("a","b");
main("a","b","c");
......
main(new String[]{});
(String...匹配String*,而null也可以是一个特殊的String)
2.参数位置
使用...的参数只能是最后一个参数.不然谁知道你调用的时候,点点点匹配到哪个实参?
public static void main(String[] args,int index)//可以
public static void main(String... args,int index)//不行!
3.重载
假设有以下两个方法:
public static void main(String... args)//方法1
public static void main(String a,String... args)//方法3
从语法上来看,这个重载完全没有错误,eclipse也没有报错.但是当调用时使用的参数个数大于这些方法中点点点参数前面的参数个数时,eclipse就会发现这个错误了.很拗口是不是?嘿嘿~还是举例来说吧.以上这两个方法,如果调用时
main();
编译器会认出这个调用的是方法1.但是如果调用时
main("");
编译器就疯了...因为一个String参数,既符合方法1的点点点,也符合方法3的String+点点点,编译器就不知道调用的是哪个方法了.
String[]参数不会有这种问题.
所以重载时要注意,如果点点点参数前面有跟它类型相同的参数...最好的方法,似乎就是换回数组形式了,要么就给方法改个名字吧.
4.遇上泛型加外包
用个实例来说
java.util.Arrays是个工具类,所有方法都是静态的,对数组的操作.里面有个方法asList(T... args),用来把类型T的数组转化成ListT.
这是个很有用的方法,在绝大多数情况下都能如你所愿.
但是,你可以试试下面的写法
int[] is=...//自定义的数组,或者从什么地方获取来的数组
ListInteger list=Arrays.asList(is);
很不幸,不要说执行,编译都通不过.错误的意思大概是:
不能将Listint[]转化成ListInteger
明白了吧?
你的设想是,把int[]中的每一个元素对应T...中的每一个点,
可编译器不这么想.因为int是原始类型,不是Object的子类.而泛型T隐含的条件是T extends Object.所以编译器不会把每一个int看做T,不会把int[]看做T点点点.虽然java已经支持自动将原始类型封包成外包类,但那是单个的情况.
而数组(不管什么类型)则是一种特殊的类型,是Object的子类,所以编译器觉得整个int[]对应一个T,你调用的方法是asListint[](int[]... args)而不是你想象中的asListInteger(Integer...)
关于java参数中...和java参数中带冒号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-07,除非注明,否则均为
原创文章,转载请注明出处。