Java学习记录

Java数据结构

Java Vector类:

  1. 关于初始化的一种方法:
Vector(int size, int incr)

当我们添加的的元素大于size时,每一个多出的元素Vector会给其增加两个incr个元素数目的空间

void ensureCapacity(int minCapacity)

向量的容量扩展到minCapacity

Java 迭代器

type b;
Iterator<type> it = b.iterator();

使用迭代器之前首先要声明一个集合框架类型,之后再初始化迭代器。

迭代器方法
while(it.hasnext()){
    System.out.println(it.next());
}

用于遍历迭代器

Java泛型

public static <E> void printArray(E[] inputArray)
  1. 同C++一样,类型参数也能作为返回类型。
  2. 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)
对于有界的类型参数
  1. 定义:我们希望限制传递的类型种类的范围,例如我们只希望传递Number或者其子类型
  2. 实现:要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。
  3. 实例:

    public static <E extends Number> void defprint(E num)

    限制为Number的子类。

泛型类
public class Box<T>

T代表变量类型

类型通配符
List<?> data

?可以代表Number,String等类型

List<? extends Number> data

代表上限为Number

Java序列化

class Emploee implements  java.io.Serializable{
    public String name;
    public String address;
    public int number;
    public void mailCheck() {
        System.out.println("Mailing a check to" + name + " " + address);
    }
}
public class serialize {
    public static void main(String[] args) {
        Emploee e = new Emploee();
        e.name = "Ali";
        e.address = "hfkshfksahf";
        e.number = 101;
        try {
            FileOutputStream fileout = new FileOutputStream("c.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileout);
            out.writeObject(e);
            out.close();
            fileout.close();
            System.out.println("Serialized data is saved");
        }catch(IOException i) {
            i.printStackTrace();
        }
    }
}

一个类要想序列化成功,必须满足两个条件:

  1. 该类必须实现 java.io.Serializable 对象
  2. 该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的,即用关键字 transient 声明。

    反序列化

    public static void main(String[] args) {
        Emploee e = null;
        try {
            FileInputStream filein = new FileInputStream("c.ser");
            ObjectInputStream obin = new ObjectInputStream(filein);
            e = (Emploee)obin.readObject();
            filein.close();
            obin.close();
        }catch(IOException i) {
            System.out.println(i);
        }catch(ClassNotFoundException n) {
            System.out.println(n);
        }
        System.out.println(e.address +" "+e.name+" "+e.number);
    }

    注意:被声明为transient的对象不会传出到输出流,因此在反序列化时不会被赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellowangld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值