主体备案与网站备案网上seo研究

当前位置: 首页 > news >正文

主体备案与网站备案,网上seo研究,合肥市建设通网站,临海手机网站个人主页→VON 收录专栏→java从入门到起飞 目录 一、前言 二、泛型的简要概述 三、泛型的基本概念 类型参数#xff1a; 通配符#xff1a; 边界#xff1a; 使用泛型的好处#xff1a; 四、泛型类 五、泛型方法 六、思考 七、疑惑 一、前言 泛型对于我来说又… 个人主页→VON 收录专栏→java从入门到起飞 目录 一、前言 二、泛型的简要概述 三、泛型的基本概念 类型参数 通配符 边界 使用泛型的好处 四、泛型类 五、泛型方法 六、思考 七、疑惑 一、前言 泛型对于我来说又是一个新的名词在其他语言中或许也有只是我可能没学到。接触一个新的东西学习起来是比较吃力的但收获也挺多的毕竟是一个新的知识点。有些不理解的地方希望各位大佬能够多加点评。 二、泛型的简要概述 Java中的泛型是一种在编译时检查类型安全性的特性它允许程序员编写出更加类型安全的代码同时避免了运行时类型转换错误。泛型是在Java SE 5.0版本中引入的它使得代码更易于阅读和维护并且减少了强制类型转换的需要。 三、泛型的基本概念 类型参数 在声明类或接口时使用的占位符类型通常用大写字母 T、E、K、V 等表示。这些类型参数可以在类或接口的方法签名中使用以指定具体的类型。 通配符 使用 ? 表示未知类型可以用来接收任何类型的数据但不能用来发送数据。通配符可以与限定符结合使用如 ? extends Number 表示未知类型但必须是 Number 或其子类? super Integer 表示未知类型但必须是 Integer 或其超类。 边界 通过 T extends SomeClass 或 T super SomeClass 定义类型参数的上界或下界限制了类型参数的具体范围。 使用泛型的好处 类型安全编译器会在编译阶段检查类型错误而不是在运行时抛出 ClassCastException。重用性可以通过泛型编写通用的类或方法这些类或方法可以在不同类型的对象上工作。清晰性代码中的类型信息更加明确提高了代码的可读性和可维护性。 四、泛型类 自行创建泛型类 package ArrayDemo.GenericsDemo;import java.util.Arrays;// 当编写一个类的时候如果不确定类型那么这个类就可以定义为泛型类 public class MyArrayListE {Object[] obj new Object[10];int size;// E:表示不确定的类型// e:形参的名字/变量名// 添加元素public boolean add(E e){obj[size] e;size;return true;}public E get(int index){return (E)obj[index];}Overridepublic String toString() {return Arrays.toString(obj);} }package ArrayDemo.GenericsDemo;import java.util.ArrayList; import java.util.Iterator;public class A02_GenericsDemo02 {public static void main(String[] args) {// 泛型的好处// 1.统一的数据类型// 2.把运行时期的问题提前到了编译期间避免了强制类型转换可能出现的异常因为在编译阶段类型就已经确定下来了// java的泛型是伪泛型// 泛型的细节// 1.泛型中不能写基本数据类型// 2.指定泛型的具体类型后传递数据时可以传入该类类型或者其子类类型// 3.如果不写泛型类型默认是Object// 泛型类// 使用场景当一个类中某个变量的数据类型不确定是就可以定义带有泛型的类// 泛型类的使用MyArrayListString list1 new MyArrayList();list1.add(a);list1.add(b);list1.add©;list1.add(d);System.out.println(list1);// [a, b, c, d, null, null, null, null, null, null]MyArrayListInteger list2 new MyArrayList();list2.add(1);list2.add(2);list2.add(3);list2.add(4);System.out.println(list2);// [1, 2, 3, 4, null, null, null, null, null, null]} }因为自定义的泛型并没有明确规定类型所以集合的类型我们可以根据需求来定义上述例子中就用了Integer和String两种数据类型进行的创建。 五、泛型方法 自定义泛型方法可以根据需求进行自行定义 这里以向集合当中添加元素为例。 package ArrayDemo.GenericsDemo;import java.util.ArrayList;public class ListUtil {private ListUtil(){}public staticE void addAll(ArrayListE list,E e1,E e2,E e3,E e4){list.add(e1);list.add(e2);list.add(e3);list.add(e4);}public staticE void addAll2(ArrayListE list,E…e){for (E element : e) {list.add(element);}} }package ArrayDemo.GenericsDemo;import com.von.day13.A;import java.util.ArrayList;public class A03_GenericsDemo03 {public static void main(String[] args) {// 泛型方法// 方法中形参类型不确定时// 方案一使用类名后面定义的泛型所有方法都能使用// 方案二在方法申明上定义自己的泛型只有本方法能用ArrayListInteger list1 new ArrayList();ListUtil.addAll(list1,1,2,3,4);System.out.println(list1);// [1, 2, 3, 4]ArrayListString list2 new ArrayList();ListUtil.addAll(list2,a,b,c,d);System.out.println(list2);// [a, b, c, d]ArrayListString list3 new ArrayList();ListUtil.addAll2(list3,a,b,c,d,e,f,g);System.out.println(list3);// [a, b, c, d, e, f, g]} }六、思考 没有泛型的时候集合如何存储数据 package ArrayDemo.GenericsDemo;import java.util.ArrayList; import java.util.Iterator;public class A01_GenericsDemo01 {public static void main(String[] args) {// 泛型是JDK5中引入的特性可以在编译阶段约束操作的数据类型并进行检查// 泛型的格式数据类型// 注泛型只支持引用数据类型// 思考没有泛型的时候集合如何存储数据// 1.创建集合并添加数据ArrayList list new ArrayList();// 字符list.add(a);list.add(b);list.add©;list.add(d);// 数字list.add(1);list.add(2);list.add(3);// 对象list.add(new Student(zhang,20));list.add(new Student(li,19));list.add(new Student(wang,22));// 2.遍历集合中的每个元素Iterator it list.iterator();while(it.hasNext()){// 多态的弊端是不能访问子类的特有功能// 如不能够访问学生这一对象中的单独一个System.out.println(it.next());}} }如果没有给集合指定类型默认为所有的数据类型都是Object类型 此时可以添加任意的数据类型 不过也有弊端不能够访问特有的行为 因此就推出了泛型可以在添加数据的时候就把类型进行统一 而且在获取数据的时候也不用进行强转操作了十分的方便 七、疑惑 这里的输出为什么是地址值而不是集合中的元素值 希望各位大佬们能够解答