Java 基础知识回顾(一)
语言基础
面向对象编程(OOP)
OOP :面向对象编程,以对象为核心的编程思想,指挥对象来实现功能,而不用在意对象具体的代码实现
对象:包括属性以及行为
比如说:在购买债券的场景中,购买人可以看作一个对象,他所持的债券以及他拥有的资金可以看作他的属性,而买入债券和卖出债券可以看作他的行为及方法
接口(interface)
接口主要用来描述类具体有什么功能,而并不给出每个功能的具体实现。一个类可以实现(implement),一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象
让类实现一个接口:
- 将类声明为实现给定的接口,使用关键字implements
- 对接口中所有方法进行定义
接口的特性
- 接口不是类,不能用new实例化一个接口
- 可以声明接口的变量,但变量必须引用类的类对象
- 可以通过instanceof检测一个对象是否实现了特定接口
- 接口可以被扩展
- 接口不能包含实例域或静态方法,但可以包含常量
- 接口的方法默认设置为public,接口中的域默认设为public static final
接口和抽象类的区别
抽象类表示通用属性时,每个类只能扩展一个类,而一个类可以实现多个接口
容器
能装对象的对象
- List 线性结构,可变长度
- Set 集合,非线性,去除重复
- Map 映射,存储的时候以key:value形式存储数据
在java中所有的集合的根:collection 接口
List
List 在Java中是一个接口,主要的有ArrayList和LinkedList两个实现类,具有自动扩容的特性,按照自己的添加顺序进行存储
ArrayList
底层是数组形式进行存储,当不足时自动扩容
//创建
List list = new ArrayList();
//add
list.add("a");
LinkedList
以链表形式进行存储。每个节点存入value和next
//创建
List list = new LinkedList();
//add
list.add("a");
注意:
在实际应用中,常用ArrayList,查找数据更加容易,效率高
LinkedList在删除和新增插入等操作上更加高效
List常用操作
- add() 添加
- remove() 删除
- size() 列表大小
- get() 查询数据,根据index,返回数据为Object,起始为0
- contains() 判断容器中是否存在
遍历列表
for(int i = 0;i< list.size();i++)
{//具体操作}
Set集合
不允许存在重复数据,存储顺序不是按照添加顺序存放的
主要的实现类:HashSet和TreeSet
HashSet
无序,去重复
//创建
Set s = new HashSet();
//添加
s.add("sdf);
TreeSet
默认进行排序(如,数字增序),不重复
//创建
Set s = new TreeSet();
//添加
s.add("sdf);
Set操作
- add()添加
- remove() 删除元素
- 取数据利用迭代器,不存在下标所以没有get()
- size()
- contains()
Map容器
Key --> value
主要的两个实现类:HashMap 和TreeMap
HashMap
以哈希算法为根本,乱序
Map map = new HashMap();
//添加键值对,key value
map.put("1","lby");
TreeMap
根据Key对键值对进行排序
Map map = new TreeMap();
Map的操作
- put(key,value) 存储数据
- remove(key) 删除
- size()
- containsKey(key) map中是否包含参数key
- 添加时 如果存在相同key,则会进行覆盖
- keySet() 把所有key打包成Set集合返回
- get(key) 通过key查询value
迭代器 Iterator
对List,Set 和Map 进行操作,取出,遍历等
迭代:一个一个的往外取
循环List,Set与List相似,
List list = new ArrayList<>();
list.add("lby");
list.add("bby");
list.add("cby");
list.add("dby");
while(it.hasNext()){
String s = (String) it.next();
System.out.println(s);
}
Map
//方法一
Set set = map.keySet();
Map map = new HashMap();
map.put("1","lby");
map.put("2","bby");
map.put("3","cby");
Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext()){
String key = (String) it.next(); //所有的key
System.out.println(map.get(key));
}
//方法二
Set set =map.entrySet();
Iterator it = set.iterator();
while (it.hasNext()){
Map.Entry entry = (Map.Entry) it.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}