java类参数是什么意思 java的类型参数是什么意思
其实java类参数是什么意思的问题并不复杂,但是又很多的朋友都不太了解java的类型参数是什么意思,因此呢,今天小编就来为大家分享java类参数是什么意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
java的类型参数是什么意思
应该是泛型中提到的一个概念,<T>表示传入任意参数,在给一个泛型类初始化的时候我们要给它传入具体的值,一般是一个类型,如String,Integer或者是一个java bean类型的数据,这时候,String是作为一个参数传过去的,但它表示的是一个字符串类型,也就是传入了String类型的参数。此时String就是一个参数,一个类型参数。如List<string> testList= new List<string>();一个泛型数组,我们要规定该list中只能传入字符串怎么办,这时就给他传入一个String类型参数,只要传入其他类型就会在编译期报错,这也是泛型的一个优点。
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的数组转化成List<T>.
这是个很有用的方法,在绝大多数情况下都能如你所愿.
但是,你可以试试下面的写法
int[] is=...//自定义的数组,或者从什么地方获取来的数组
List<Integer> list=Arrays.asList(is);
很不幸,不要说执行,编译都通不过.错误的意思大概是:
不能将List<int[]>转化成List<Integer>
明白了吧?
你的设想是,把int[]中的每一个元素对应T...中的每一个点,
可编译器不这么想.因为int是原始类型,不是Object的子类.而泛型T隐含的条件是T extends Object.所以编译器不会把每一个int看做T,不会把int[]看做T点点点.虽然java已经支持自动将原始类型封包成外包类,但那是单个的情况.
而数组(不管什么类型)则是一种特殊的类型,是Object的子类,所以编译器觉得整个int[]对应一个T,你调用的方法是asList<int[]>(int[]... args)而不是你想象中的asList<Integer>(Integer...)
请问java中的类是什么意思
Java创建一个类的关键字为class,基本语法格式为public class ClassName{};在开发中,通常类的名字首字母大写。类中包含了类的特定属性,比如我们创建一个动物类,动物有自己的属性名字,年龄等属性特点,我们创建好动物这个类之后,当需要一个动物的时候,就去创建一个动物的对象,之后使用这个具体的对象进行操作就可以。创建对象的关键字是new,基本语法为 ClassName objectName= new ClassName();
在Java中类的构造函数包含有参构造函数和无参构造函数,默认如果不在类中写构造函数,默认有一个无参的构造函数,当创建一个对象的时候,默认使用的就是这个构造函数。
如果需要在创建对象的时候就将对象的属性值设置好,就需要一个有参构造函数,在创建对象的时候,将参数传入即可。如果创建一个有参的构造函数,那么默认的无参构造函数将会被覆盖,如果还需要一个无参构造函数,则需要手动重写一个无参构造函数。
Java类可以被继承,子类会继承父类的一些属性值,但是子类也可以有自己的一些特定属性,小狗(子类)属于动物(父类),有动物这个种类的所有属性,但是小狗也有属于自己的特性。在开发中我们会将具有某些基本属性的归为一类,如果另一个类也有这些属性,而且它还有属于自己的特性,可以将子类继承于父类,这样子类就包含了父类所有的属性。
Java类的继承关键字是extends,基本语法为: public class ChiledClass extends ParentClass{};
在子类中,有时候虽然继承了父类的属性值,但是有时候,我们需要子类中的该属性值有自己的特点,这时候,我们可以重写父类的属性方法,将该属性设置为我们需要的值,这样虽然子类继承于父类,但是也有自己的独特性。
在开发中,我们通常会将类的属性设置为私有的,这样外部就不会随意访问到这个属性。但是为了让外部能够访问该属性值,我们通常使用 set和get方法去设置和获取该属性值,这样如果开发中不想让别人随意修改该属性,可以将set方法去掉,只留下get方法,这样这个属性就只可以访问而不可以修改,很好的保护的这个属性值,不让别人去随意修改。
请问什么是Java中的参数。
首先你得知道什么是方法吧,要是这个不懂,那下面我说的估计你也不会明白了,就直接无视吧。
例如我自己写一个方法,比如说这个方法属于test类,像这样
public static void myMethod(String str){
System.out.println(str);
}
在我调用这个方法的时候,我就需要传递一个参数给这个方法,比如这样。
test.myMethod("let's do it");
那么这个"let's do it"就是参数,如果你想要用myMethod这个方法,必须要给一个string型的参数,不然编译器就不会让你通过,你的代码会报错的。参数作用无非是将你需要用的东西传递给方法,在方法里面处理这个参数,比如说你要输出,或者要在方法里面做四则运算等等。
这个问题其实不好说,因为实在是很简单,但是要说明这个问题就会引出一大堆问题,什么是方法,什么是类,static是什么,void是干啥的,这玩意我解释不起,我只能尽我所能简单说说。如果你要真想学java,先找本书看看吧,我觉得你可能没看过哪怕是一本java基础的书,要不然也不会问这个问题。
OK,本文到此结束,希望对大家有所帮助。