- 方法的参数
形参和实参
形参,方法头括号里的参数,也就是方法体中使用的部分
实参,给方法传入的参数
传值调用 ,基本数据类型作为参数,会产生值的副本,形参操作不影响实参
传引用调用 ,引用类型作为参数 类类型 接口 数组 传引用类型的地址,形参操作会对实参造成影响
实参给形参传递的都是值 传值的过程都是复制的过程
基本数据类型是将值直接复制 引用类型是将地址进行了复制
String 和Integer Double等包装类,定义为不可改值的类型immutable,这时会进行特殊处理,要理解为值传递,形参操作不影响实参
原因是以上这些类中,并没有改变对象自身值的操作
String如果要使用引用类型,可以选择使用stringbuffer和stringbuilder
- 泛型
- 概念
泛型的本质是参数化类型
泛型只对编译时有效
- 为什么要用泛型
相当于类型的通配符(通用匹配),就像是一个虚拟的类型
- 泛型的使用
- 泛型类
class FX<T>
- 泛型方法
public static <E> void showArrayAll(E[] a)
- 集合中的类型(在集合中讲)
- 泛型的通配符
?为了让父类子类等都通过泛型的使用
- 泛型的上下边界
上边界
<? extends Number> 往上只能继承到Number 也就是说只能用Number以及子类作为泛型的具体类型使用
下边界
<? super Number> 往下只能用到当前类,当前类以及它的父类可以作为泛型的具体类型
- 泛型使用的好处
- 类型安全
通过泛型的定义,我们可以界定变量的类型限制,提高Java程序的类型安全
- 消除类型强制转换
防止类型之间的强制转换,
- 提高性能
因为消除了强制转换,强制转换的代码不会被编译器插入到字节码中,减少执行部分,从而提高性能
.java → .class
- 泛型使用的注意事项
- 泛型的类型参数只能是类类型,不能是基本类型
- 泛型的类型参数可以有多个
- 不能对确切泛型类型是instanceof操作 泛型的对象 instanceof FX<Number> //非法操作
- 不能创建一个确切的泛型类型的数组