美文网首页我爱编程
java 基础知识(四)

java 基础知识(四)

作者: 月影风煞 | 来源:发表于2018-04-16 15:46 被阅读0次

1.抽象类(标志:abstract)

定义:有抽象方法的类,就必须声明为抽象类,也是一个类
抽象方法:没有方法体

作用:它是作为父类来使用的,是等待子类去实现的,提供一个模版让后代去实现的类,常用于需求分析和概要设计的时候

访问权限:抽象类是要被子类继承的,所以它的抽象方法只有public,protected,default三种访问权限,其他成员的访问权限和和类一样

抽象类:

  • 可以有普通的成员变量和方法(static final 都行)
  • 可以有常量
  • 可以有构造方法(用来子类继承,必须被调用)
  • 抽象方法可有可无
  • 不能被实例化,因为没有使用方法
  • 抽象类是用来被继承的
    当一个类继承了一个抽象类时,必须要重写抽象类里面的抽象方法或继续定义为一个抽象类(抽象类和子类是is关系)

2.接口(标志:interface)

定义:是一种特殊的抽象,里面的方法都是抽象的
作用:对接口实现类起规范作用

访问权限:所有成员的属性都为public static final,也就是说接口中声明的变量都是常量,不能被继承;
所有方法的访问属性为public, 但一般为了代码的简洁性,接口类中的方法和属性不加 public。

接口:

  • 不能有普通的成员变量与方法,final方法也不能有
  • 可以存在常量(final可省,属性是个定值)
  • 没有构造器,不能实例化
  • 接口之间是可以继承的
  • 一个类可以实现(implements)多个接口,实现了必须实现接口的所有方法。
  • 接口是java单继承的有力扩展(java 可以单继承,多实现)

接口的优势:

  • 标准化:只要接口定义了方法名,所有的实现类也就确定了,有一个标准化的作用
  • 分工化:接口的方法可以直接被使用,具体的实现类对象赋值给接口就行了。

3.集合框架接口 集合之间的继承实现关系

父接口:collection
子接口:List (有序,可重复) , Set(无序,不重复)

1) collection接口
常用方法:
boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象
int size()返回当前集合中元素的数量
boolean contains(Object o)查找集合中是否有指定的对象
boolean isEmpty()判断集合是否为空
Iterator iterator()返回一个迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中的元素
boolean addAll(Collection c)将集合c中所有的元素添加给该集合
void clear()删除集合中所有元素
void removeAll(Collection c)从集合中删除c集合中也有的元素
void retainAll(Collection c)从集合中删除集合c中不包含的元素

Iterator:迭代器接口:对集合元素进行迭代
方法:hasNext():有元素可以迭代,返回true
next():返回迭代的下一个元素

1.1)List接口(有序的 可重复的接口)

常用的实现类:
ArrayList:0.5倍的容量增长,读取元素的效率高,但删除的效率低
LinkedList:删除元素效率高,读取效率低
vector:线程安全的类 容量是1倍1倍的增长

List常用的方法:
void add(int index,Object element)在指定位置上添加一个对象
boolean addAll(int index,Collection c)将集合c的元素添加到指定的位置
Object get(int index)返回List中指定位置的元素
int indexOf(Object o)返回第一个出现元素o的位置.
Object remove(int index)删除指定位置的元素
Object set(int index,Object element)用元素element取代位置index上的元素,返回被取代的元素
void sort()

当List集合元素是基本类型和String时,直接使用sort() 方法,因为包装类和String都已经实现了comparable接口的conpareTo()方法。
当元素是自定义类的时候,对象是不能比较的,只有实现comparable接口(里面只有一个conpareTo()方法)才能进行比较,也就能使用sort()方法。

1.2)set接口(不重复的)

常用实现类:
HashSet:无序
TreeSet:有序,集合元素必须实现comparable接口才行,否则添加元素报错

2)Map接口(key相同的会进行覆盖)
 map常用方法:
boolean equals(Object o)比较对象
boolean remove(Object o)删除一个对象
put(Object key,Object value)添加key和value
keySet()返回由key组成的set集合
entrySet()返回由元素组成的set集合
`Set<Map.Entry<String, Student>> set = map.entrySet();`

常用实现类:
Hashtable: 任何非空(non-null)的对象。
HashMap: 可空的对象,效率高,较常用。

3)总结

泛型:指定集合里面存放的数据类型
好处:提升安全性
减少强制类型转换(减少出错的几率)
提升运行性能

foreach(增强for循环):
for(数据类型 变量名:集合|数组){ }
jdk1.5以后的新特性:

  • foreach
  • 自动拆装包
  • 可变参数
public static int add(int a,int b,int ...c){
int sun=a+b;
for(int n:c)//c相当于数组
sun+=n;
}
  • 泛型
  • 枚举
  • 注解

List 和Set 的遍历:
List 可以是一般for循环 、foreach 、迭代器
Set可以是foreach 、迭代器

obj instanceof 类名|接口
判断一个对象是否是某个类的实例

  • 如果涉及到堆栈,队列(先进后出)等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
  • 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
  • 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法
  • 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。
  • ArrayList、HashSet/LinkedHashSet、PriorityQueue、LinkedList是线程不安全的,
    可以使用synchronized关键字,或者类似下面的方法解决:
    [java] view plain copy
    List list = Collections.synchronizedList(new ArrayList(...));

相关文章

  • Android 知识梳理目录 - 好吧,这是一个很"干

    一、Java 知识梳理 Java&Android 基础知识梳理(1) - 注解Java&Android 基础知识梳...

  • java基础知识

    title: java基础知识tags: [java基础知识] 位运算符 java种的运算符有 “&”,“|”,“...

  • Java基础知识梳理

    Java 基础知识梳理 1、Java的基本程序设计结构 1.1:数据类型 java中存在8中基本数据类型,其中有四...

  • java基础知识学习(四)

    title: java基础知识学习(四)date: 2019-04-29 14:25:58tags: javaca...

  • java 基础知识(四)

    1.抽象类(标志:abstract) 定义:有抽象方法的类,就必须声明为抽象类,也是一个类抽象方法:没有方法体 作...

  • java基础知识(四)

    接口里的普通方法不能有方法实现(方法体);但类方法、默认方法、私有方法都必须有方法实现(方法体)。 ➢ 接口里只能...

  • Java基础知识整理(一)

    1.Java基础知识体系 2.Java技术体系平台 3.Java语言特点与核心机制 1.Java基础知识体系 2....

  • 大话Java持久层

    基础知识储备: Java SE(Java语言【java.lang】、Java集合框架【java.util】) Ja...

  • Android面试题4

    1 Java基础知识。线程,java虚拟机,内存模型等。2 Android基础知识。官方API,常用控件源码,自定...

  • Java 序列化

    title: Java 序列化categories: 后台开发tags: java 基础知识 必备 Java 序列...

网友评论

    本文标题:java 基础知识(四)

    本文链接:https://www.haomeiwen.com/subject/fgyahftx.html