第七天学习

集合框架

接口

  • List接口:储存一组不唯一,有序(插入顺序)的对象
  • Set接口:储存一组唯一,无序的对象
  • SortedSet接口:继承于Set,保存有序的集合

实现类

  • ArrayList:实现了List接口,和数组相似能自动增长大小,每次增长长度为自身的50%,不能线程同步,不可用于多线程
  • HashSet:实现了Set接口,最多包含一个值为null的元素
  • HashMap:实现了Map接口
  • LinkHashMap:继承于HashMap,使用元素自然顺序对元素进行排序
  • Vector:和ArrayList类似,线程同步,可用于多线程
  • Dictionary:和Map类似
  • HashTable:继承于Dictionary

Dictionary和HashTable的比较

  • 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
  • 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized()方法可以获得完全线程安全的类型. 而Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
  • Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.

迭代器使用

String str = "abc";
Iterator <String> s = str.iterator();
if (s.hasNext()){
    System.out.print(s.next());
}

HashMap和HashTable的区别

参考HashMap是HashTable的轻量级实现,基本功能是一样的,HashMap是非同步的,不能多线程共享*,HashTable同步,一次只能由一个线程读写,可多线程共享

  • HashTable的键和值都不能为null,HashMap可以一个键为null,多个值为null,所以不能使用get()方法判断HashMap是否存在某个值,因为返回null时可能是键为空也可能是值为空应该使用containsKey()判断
  • HashMap相比于HashTable删除了contains()方法,在HashTable中,contains()方法和containsValue()方功能一样
  • 单线程HashMap比HashTable的效率要高

java普通的输入的小数是double类型,整数是int类型

float a = 11.2;//会报错,因为11.2默认为double类型
修改为float a = 11.2F;//不会报错

抽象类

抽象类和实现类的唯一区别是,抽象类自身不能实例化对象,必须有子类继承才能实例化

  • 定义方法abstract关键字,如public abstract class Test {}
  • 抽象类可包含抽象方法,抽象类不一定有抽象方法,但是包含抽象方法的类一定是抽象类

抽象方法

  • 定义方法:关键字也是abstract
  • 抽象方法只能有方法名,不能有方法体,所以定义时是这种样子public abstract int test();
  • 继承具有抽象方法的抽象类,在子类中必须实现抽象方法、或者该子类也为抽象类

接口

** 接口是抽象方法的集合**

  • 类实现接口时,必须实现接口的所有抽象方法
  • 类只能继承一个抽象类、但能实现多个接口
  • 标记接口:没有声明任何方法和属性的接口,仅用于标记。如public interface Test{}

继承

方法重写

  • 参数列表必须一致
  • 返回类型必须一致
  • 访问权限不能低于父类访问权限,父类权限为public子类类的权限就必须为public
  • final声明的方法不能被重写,final声明的类不能被继承
  • private声明的方法不能被继承
  • static声明的方法不能被重写,可以被重新声明
  • 位于同一包的子类可以重写父类除final和private声明的全部全部方法
  • 位于不同包下的子类可以重写父类public和protected声明的方法
  • 构造方法不能被重写

重载

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

  • 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  • 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
  • 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
  • 方法重载参数列表必须改变(参数数量、类型、顺序的改变),并且返回类型、访问权限、异常处理都能修改
    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

关键字

static:声明静态变量或静态方法

  • 静态变量:也就是类变量,无论类实例化多少个对象,都共用一组类变量
  • 静态方法:静态方法不能使用类的非静态变量,不能使用除类变量以外的成员变量

final:最终对象

  • final声明的类不能被继承
  • final声明的方法不能被子类重写
  • final声明的变量不能被重新赋值,常被用于和static一起定义类常量static final int MAX_VALUE = 100;
原文地址:https://www.cnblogs.com/zhz-8919/p/10641530.html