1. java中parameter和variable有什么区别
variable是变量
变量,就是可以改变的量呀。
比如一个函数中:
void add(int x,int y)
{
int sum=0;
sum=x+y;
System.out.print(sum);
}
在这个函数中,x和y就是变量,调有这个函数的时候,假如x=2,y=3,结果就会打印5;x=2,y=1,结果就会打印3;总之,你调用的时候传了什么值给他们,他们的值就变成了什么。在一个类中,这个方法每调用一次,x,y的值也相应的改变了。
parameter是参数
public void f(int a,float b,String c,Object d)
函数名f后面扩起来的都是参数。
参数分为参数类型和形式参数
参数类型 形参
int a
float b
String c
Object d
本函数中,有a,b,c,d4个参数
2. java 可变参数是什么
java 可变参数是1.5版本的新特性,也就是说用户若是想定义一个方法,但是在此之前并不知道以后要用的时候想传几个参数进去,可以在方法的参数列表中写参数类型或者数组名,然后在方法内部直接用操作数组的方式操作。
java可变长的形参声明格式:dataType...parameters。
其中,省略号表示数据类型为dataType的parameters参数个数不固定的,可为任意个。此外,在方法调用时,变长形式参数可被替换成1个、2个或多个参数。在编译时,方法的变长参数将被看成具有相同类型的一维数组。
在java语言开发中,从JDK1.5以后,java允许定义形参长度可变的参数从而允许为方法指定数量不确定的形参。
3. java ZipParameters parameters = new ZipParameters() 要什么依赖包
你确定你的包真的导入进去了?
或者你试试你的zip4j-1.3.1能不能打开,有可能是你的jar包损坏了。
4. 谁能解释一下Java中Typeparameters的含义
ypeparameters:
泛型参数
一般意义上来说,泛型是一种把相同的代码重用在不同的类型上的技术。它作为一个相对独立于其它面向对象特性的技术,在面向对象语言里已经变得越来越普遍了。我们这里之所以讨论泛型,一是因为泛型这种技术本身就很让人感兴趣,另外,也是因为泛型是一个被用来对付二元方法问题(binarymethodproblem)的主要工具。
和subtyping共同使用,泛型可以用来解决一些在方法特化等场合由反协变带来的类型系统的困难。考虑这样一个例子:
我们有Person和Vegitarian两种类型,同时,我们有Vegitable和Food两种类型。而且,Vegitable<:Food.
ObjectTypePersonis
…
methodeat(food:Food);
end;
ObjectTypeVegetarianis
…
methodeat(food:Vegitable);
end;
这里,从常识,我们知道一个Vegitarian是一个人。所以,我们希望可以有Vegetarian<:Person.
不幸的是,因为参数是反协变的,如果我们错误地认为Vegetarian<:Person,根据subtype的subsumption原则,一个Vegetarian的对象就可以被当作Person来用。于是一个Vegetarian就可以错误地吃起肉来。
使用泛型技术,我们引入TypeOperator(也就是,从一个类型导出另一个类型,概念上类似于对类型的函数)。
ObjectOperatorPersonEating[F<:Food]is
…
methodeat(food:F);
end;
[F<:Vegetable]is
…
methodeat(food:F);
end;
这里使用的技术被称作BoundedTypeParameterization.(Trelli/Owl,Sather,Eiffel,PolyTOIL,Raptide以及GenericJava都支持BoundedTypeParameterization.其它的语言,如C++,只支持简单的没有类型约束的泛型)
F是一个类型参数,它可以被实例化成一个具体的类型。类似于变量的类型定义,一个bound如F<:Vegitable限制了F只能被Vegitable及其子类型所实例化。所以,VegitarianEating[Vegitable],VegitarianEating[Carrot]都是合法的类型。而VegitarianEating[Beef]就不是一个合法的类型。类型VegitarianEating[Vegitable]是VegitarianEating的一个实例,同时它等价于类型Vegitarian.(我们用的是基于结构的subtype)
于是,我们有:
对任意F<:Vegitable,VegitarianEating[F]<:PersonEating[F]
对于原来的Vegitarian类型,我们有:
Vegetarian=VegetarianEating[Vegetable]<:PersonEating[Vegitable]
这种关系,正确地表达了“一个素食者是一个吃蔬菜的人”的概念。
除了BoundedTypeParameterization之外,还有一种类似的方法也可以解决这个素食者的问题。这种方法被叫做:BoundedAbstractType
请看这个定义:
ObjectTypePersonis
TypeF<:Food;
…
varlunch:F;
methodeat(food:F);
end;
ObjectTypeVegetarianis
TypeF<:Vegitable;
…
varlunch:F;
methodeat(food:F);
end;
这里,F<:Food的意思是,给定一个Person,我们知道他能吃某种Food,但我们不知道具体是哪一种。这个lunch的属性提供这个Person所吃的Food.
在创建Person对象时,我们可以先选定一个Food的subtype,比如说,F=Dessert.然后,用一个Dessert类型的变量赋给属性lunch.最后再实现一个eat(food:Dessert)的方法。
这样,Vegetarian<:Person是安全的了。当你把一个Vegetarian当作一个Person处理时,这个Vegitarian可以安全地吃他自带的午餐,即使你不知道他吃的是肉还是菜。
这种方法的局限在于,Person,Vegitarian只能吃他们自带的午餐。你不能让他们吃买来的午餐。
5. java编程接收两个命令行参数,功能是把第二个命令行参数以文本方式保存到第一个文件中;
public class JavaArgvTest{
public static void main(String argv[])throws java.io.FileNotFoundException,java.io.IOException{
argv=new String[]{"JavaArgvTest.txt", "adw eqw ewerf wewera dfasdfwerwqer"};
if(argv==null || argv.length<1){
System.out.println("Please input 2 parameters");
return;
}
java.io.FileOutputStream fou=new java.io.FileOutputStream( argv[0] );
fou.write(argv[1].getBytes());
fou.close();
}
}
// 大致如此 经过JDK1.7 测试
6. java单元测试中@Parameters怎么与配置文件对应
通常针对一个方法会写几组这样的 带入值,复杂的方法可能更多。实际使用当中,一个方法的运行会有很多依赖关系 ,不如 需要上下文环境,需要 HTTP Requst ,Response ,数据库连接等。 如果自己写的话太复杂,所以就有 很多插件来帮忙解决外部问题。