泛型的使用

基本数据类型的封装类型

1.基本数据类型与封装类的一一对应

byte-Byte

short-Short 

int-Integer

long-Long

char-Character

boolean-Boolean

float-Float

double-Double

2.自动装箱与自动拆箱

-自动装箱

把基本数据类型的变量赋值给封装类型变量

        int i=150;
        Integer i1=i;
        Integer i2=150;
        System.out.println(i1);
        System.out.println(i2);
        //i1和i2在超过127后,在Integer中以新的对象存储,而不以数存储
        System.out.println(i1==i2);
        System.out.println(i1.equals(i2));
        //==与equals也存在不同

-自动拆箱

把封装数据类型变量转为基本数据类型变量

       int i4= new Integer(30);
       int i5=i2;
       //装箱过的才可以拆箱
        System.out.println(i4);
        System.out.println(i5);

<>中不可以写基本数据类型,要用封装数据类型去替代
3.泛型的使用

作用:保证了创建的数组可以存任何类型的的数据,但是每一个数组只能存一种类型的数据

泛型的声明:类名的右边加上<>,其中写一个通配符,任何字母,单词都可以,最好大写

使用:-声名参数类型

public class ArraylistDIY<E> {
  public void add2(E e){
        //判断容量与下标的大小
        if(index==length){
            //扩容
           int newlength=length+(length>>1);
          Object []newarray  =new Object[newlength];
          for(int t=0;t<length;t++){
              newarray[t]=Array[t];
          }
          Array=newarray;
        }
        Array[index]  =e;
        index++;
        size++;
        
    }

   

ArraylistDIY arraylistDIY=new ArraylistDIY(10);
       //创建对象后,自动调用构造方法
       
       arraylistDIY.<String>add2("tgv");

-声明返回值类型

 public E get2(int index){
        if(index==length){
            throw new ArrayIndexOutOfBoundsException("index超出范围");
        }
        else{
           Object ob =Array[index];
           return (E)ob;
        }
        
    }
System.out.println(arraylistDIY.get2(6));

问题:

1.装箱与拆箱是干什么的?
在Java1.5下,不能直接向集合(collection)中放入原始类型值,因为集合只接收对象,通常这种情况下,做法应该是将这些原始类型的值转换成对象,然后将这些转换的对象放入集合中。但在某些程度上,使代码不够简洁,Java1.5下引入具有在原始类型和对象类型自动转换的装箱和拆箱机制

2.equals与==的区别
equals是判断两个变量或实例所指向的内存空间的值时表示相同

==是判断两个变量或实例是不是指向同一个内存空间

泛型(Generics)是一种在编程语言中实现参数化类型的技术,可以让我们编写更加灵活和通用的代码。下面是一个泛型使用案例: 假设我们有一个需求,需要实现一个通用的栈(Stack)数据结构,可以存储任何类型的元素。我们可以使用泛型来实现这个通用的栈数据结构。以下是一个基于Java的示例代码: ```java public class Stack<T> { private ArrayList<T> items; public Stack() { items = new ArrayList<T>(); } public void push(T item) { items.add(item); } public T pop() { if (items.isEmpty()) { throw new RuntimeException("Stack is empty"); } return items.remove(items.size() - 1); } public boolean isEmpty() { return items.isEmpty(); } } ``` 在上面的代码中,我们使用了一个类型参数 `T`,它代表任何类型。我们在类的定义中使用了 `<T>` 来声明这个类是一个泛型类,它可以接受任何类型的元素。在类的内部,我们使用 `T` 来代表元素的类型。我们将元素存储在一个 `ArrayList<T>` 中,这个 `ArrayList` 可以存储任何类型的元素。 我们定义了三个方法:`push()`、`pop()` 和 `isEmpty()`。`push()` 方法用于将元素压入栈中,`pop()` 方法用于弹出栈顶元素,并从栈中移除它,`isEmpty()` 方法用于判断栈是否为空。 使用泛型,我们可以使用这个通用的栈数据结构来存储任何类型的元素,例如: ```java Stack<Integer> intStack = new Stack<Integer>(); intStack.push(1); intStack.push(2); intStack.push(3); intStack.pop(); // 返回 3 intStack.pop(); // 返回 2 Stack<String> strStack = new Stack<String>(); strStack.push("Hello"); strStack.push("World"); strStack.pop(); // 返回 "World" ``` 在上面的示例代码中,我们分别使用了 `Stack<Integer>` 和 `Stack<String>` 来存储整数和字符串类型的元素。由于使用泛型,这个通用的栈数据结构可以存储任何类型的元素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值