大唐工作室 网站制作,建一个商城网站需要多少钱,网站建设的书 豆瓣,指定网站长期建设 运营计划本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. #x1f92d;#x1f92d;#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 前言
不知过了多久我们又不得不提及我们 数据结构 中必备的一个小知识———— 泛型
目录
包装类泛型
一. 包装类
在Java中由于基本类型不是继承自 Object
为了在 泛型 代码中可以支持 基本类型
Java 给每个 基本类型 都对应了一个包装类型
1. 基本数据类型对应的包装类 鱼式疯言 除了 Integer 和 Character 其余基本类型的包装类都是 首字母大写 2.装箱和拆箱
public class Test3 {public static void main(String[] args) {int i 10;// 装箱操作新建一个 Integer 类型对象将 i 的值放入对象的某个属性中Integer ii Integer.valueOf(i);Integer ij new Integer(i);System.out.println(ij);// 拆箱操作将 Integer 对象中的值取出放到一个基本数据类型中int j ii.intValue();System.out.println(j);}
}当我们把一个 基本数据类型 转化为 包装类型 时就称为 装箱 当我们把一个 包装类型 转化为 基本数据类型 时就称为 拆箱 3. 自动装箱和自动拆箱 public class Test3 {public static void main(String[] args) {int i 10;Integer ii i; // 自动装箱Integer ij (Integer)i; // 自动装箱System.out.println(ij);int j ii; // 自动拆箱int k (int)ii; // 自动拆箱System.out.println(k);}
}自动 的含义就是 包装类类型 和 基本数据类型 直接转化 鱼式疯言 有图有真相 二. 泛型
1.泛型的简介
一般的类和方法只能使用 具体的类型: 要么是 基本类型 要么是自定义的 类。
如果要编写可以应用于 多种类型 的代码这种刻板的 限制 对代码的 束缚 就会很大。
----- 来源 《Java编程思想》 对 泛型 的介绍。
泛型 是在 JDK1.5 引入的新的语法
通俗讲泛型 就是适用于 许多许多类型。从代码上讲就是 对类型实现了参数化
2. 泛型引出
class MyArray {
public Object[] array new Object[10];
public Object getPos(int pos) {
return this.array[pos];
}
public void setVal(int pos,Object val) {
this.array[pos] val;
}
}
public class TestDemo {
public static void main(String[] args) {
MyArray myArray new MyArray();
myArray.setVal(0,10);
myArray.setVal(1,hello);//字符串也可以存放
String ret myArray.getPos(1);//编译报错
System.out.println(ret);
}
}任何类型数据 都可以存放 1号下标本身就是 字符串 但是确 编译报错。必须进行 强制类型转换 对于 Object 这个 父类 是可以接收所以的 类 的
但我们是无法 辨别 它传入的类是 什么类型 的
因为这个原因我们的 泛型 也就 发挥用场 了
3. 泛型的语法
class 泛型类名称 类型形参列表 {// 这里可以使用类型参数
}class ClassName T1, T2, ..., Tn{
}class 泛型类名称类型形参列表 extends 继承类/* 这里可以使用类型参数 */ {
// 这里可以使用类型参数
}class ClassNameT1, T2, ..., Tn extends ParentClassT1 {
// 可以只使用部分类型参数
}下面让小编详细解释下吧
4. 泛型类
class MyArrayT {public T[] array;public MyArray() {}/*** 通过反射创建指定类型的数组* param clazz* param capacity*/public MyArray(ClassT clazz, int capacity) {array (T[]) Array.newInstance(clazz, capacity);}public T getPos(int pos) {return this.array[pos];}public void setVal(int pos,T val) {this.array[pos] val;}public T[] getArray() {return array;}public static void main(String[] args) {MyArrayInteger myArray1 new MyArray(Integer.class,10);Integer[] integers myArray1.getArray();integers[0]1;integers[1]2;integers[2]1;System.out.println(Arrays.toString(integers));}
} 讲我们需要的数据类型全部改成 T 类型即可
鱼式疯言
public T[] array;public MyArray() {}这样 初始化数组 可能会有问题
小编的建议是改成以下 Object类型 更好 记住即可
public Object array;public MyArray() {arraynew Object[10];}
泛型方法
// 两数比较的泛型方法class Test {public T extends ComparableTT Comp(T[]array){T maxarray[0];for (int i 0; i array.length; i) {if (array[i].compareTo(max)0) {maxarray[i];}}return max;}public static void main(String[] args) {
// double [] d{12.3,18.7,72.0,11.1,1.2,88.2,44.2};Integer [] d{12,18,72,11,1,88,44};Test testnew Test();Integer maxtest.IntegerComp(d);System.out.println(max);}
}注意我们的泛型方法定义时必须是 public T extends ComparableTT Comp(T[]array)鱼式疯言
两个基本类型比较时 可以用 来比较
两个引用类型比较时
array[i].compareTo(max)0进行比较大小
总结
包装类 认识了包装类的概念以及特点泛型 理解了泛型并清楚泛型的出现为我们的类型打开了多样性
可谓收获颇丰啊 如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正 希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编 创作 的最大 动力