本帖最后由 小石姐姐 于 2018-4-20 09:42 编辑
Java的上车了-知识点大全
Object对象是所有对象的父类,并定义了所有对象公共的属性和方法,toString(),将对象转换成字符串getClass(),获取该对象的类gethashCode(),获取对象的hashCode,如定义Student对象时,可以重写他的任何方法,toString(),打印打印学生的属性,进行调试比较方便,equals(),当重写可以利用两个对象的属性不同来比较对象是否相同。
System对象,currentTimeMillis()获取当前时间到1970/1/1,0:0的时间(当测试程序运行时间时可用到)
System.arrayCopy([] src,int srcIndex,[] dest,destIndex, int count);把数组复制到另一个数组,从指定索引和几个元素
Date对象
时间类的对象,包含时间的所有方法。
构造方法Date d = new Date();//空参数 表示当前时间 返回
属性;d.getTime(); //以指定格式返回时间
d.setTime(long l);//设置时间 从1970+long的毫秒数
SimpleDateFormat
格式化时间,用来格式化日期的类
构造方法
SimpleDateFormar sdf = new SimpleDateFromat("yyyy-MM-dd");//四个小姨子,两个大MM,两个小dd
方法:format(); //将日期转换成String
parse(String s) //将日期字符串转换成Date对象
Collection
所有集合的接口,包含了所有集合的共性.
体系结构----
Collection
List
ArrayList--有索引,有序,可存放引用数据类型
boolean IsEmpty(); 判断是否为空
boolean clear();
boolean contains();
LinkedList-链表
Set
hashSet--无索引,无序,可存放引用数据类型
迭代器 Itearotor
Iterator接口迭代器 实现对Collection 进行遍历 Iterator it = Collection.iterator(); 通过集合对象获取的迭代器,一对一关系啊
迭代器实际上就是集合的一个副本,当操作迭代器是再操作数组就会报出并发修改异常,意思就是原来的集合跟迭代器不同了。并发就是两个线程同时访问一个集合
ListIteator用来专门迭代List的迭代器,中间可修改,删除元素
泛型<E>
指定容器存放指定的数据类型,或者bin文件操作指定的类型,运行时就会消失,如果不添加泛型,可能会出现编译错误。把数据类型提前定义,避免出现类型转换的错误。
ArrayList<String> arr = new ArrayList<>();
foreach 高效循环
for(object obj :容器){
//可以操作每一个obj
}
linkedList链表操作快,查询慢
,fisrt地址值,next地址值
堆栈
堆,先进先出,(排队)
栈 压栈 先进后出 (弹夹)
遍历集合方式:
1.用ArrayList.toArray(); 返回值为Object类型的数组
2.用iterator中的hasNext();如果有就让他获取下一个
3.用最原始的方法for循环遍历
数据结构
数组的特点:
只能放相同的元素
查找快增删慢
如果想要得到数组的某一个元素,直接根据索引就行。
链表的特点
1.就是把数据链到一起,一个元素包括 当前的地址值 -值 - 下一个的地址值 (最后一个没有下一个的地址值)
2.操作快,查询慢
如果想要查询一个数据,会一直查询到最后
但是添加或者删除,添加把前一个的下一个地址值改为你添加进来的地址值,把你添加进来的地址值改为下一个的地址值
队列和栈
队列 :先进先出 ---排队
栈 :先进后出 ---弹夹
List接口 有整数的索引,顺序排列,顺序可重复
ArrayList 底层为数组结构 查询快,修改慢
LinkedList 链表 查询慢修改快 , 根据不同需求使用不同列表
当创建List接口指向子类对象 ArrayList 或者是LinkedList
都会用List<E> lis = new ArrayList();
当操作学生对象时会用到ArrayList
当查询
编译后泛型就不存在了
泛型定在在类中
调用时,分为上界和下届
声明泛型
静态方法中定义的泛型只能自己使用
如果接口中定义泛型 实现类必须
非静态方法定义的泛型
<? extends 父类/接口> 下届 最高不能超过父类的泛型
<? surper 子类/接口> 上界 最低不能低于子类的泛型
HashSet
跟ArrayList同级别,并同时父接口为Set,同是Collection的子接口
无参构造
HashSet<E> hs = new HashSet<E>();
注意:如果是父接口引用指向子类对象,就无法使用子类的特殊方法
特点:Set没有顺序,不允许重复
在获取hashcode时不重写就默认就使用Object.hashCode();
如果父类重写了hashCode子类默认调用 一般用的时候都写成同样的hashcode();
set中判断是否重复机制:首先先判断他的hashcode值,然后在判断地址值,添加对象时如果想判断两个对象是否相当,必须重写toString()方法
pubilc String toString(){
}
重写对象equals方法
重写hashCode方法(健壮性)
public int equals( Object obj){
//首先判断两个元素地址值是否相同,如果相同直接返回True
if(this == obj){
return true;
}
//健壮性,如果他的类型不相同也不进行判断
if(this.getClass() != obj.getClass()){
return false;
}
//判断他的hashCode是否相等
if(this.hashCode != obj.hashCode){
if(!this.getName(obj.getName)){//?是否多余
//如果他的hasCode不相等证明对象值不相等
return false;
}
}
}
Collections 工具类
Collection 跟Collections 的区别
collection 是所有集合的共性,是一个接口 包含List 和 set
collection 是工具类,用来操作List
具体静态方法
` binarySearch(List list, T key)//二分查找 从中间查找 只能查找有顺序的List 不能查找set
copy(List dest, List src);复制集合?//覆盖目标集合,但是目标List的size必须大于等于原来集合size()
fill(List lis,Object obj);将List中的所有元素替换成obj
shuffle(List list);//随机打乱顺序
sort(List<T> list) //将元素按自然规律排序
swap(List<?> list, int i, int j) lis.swap(另一个list,lis的索引,另一个lis的索引)
演示斗地主发牌
是否能把牌定义成对象//不能
Map<K,V>
是一个接口,储存的值为一对一关系的值。双列集合,key value ,键不能重复,键是无序的,一个键只能映射一个值
Map跟Collection 的区别
Collection 单身汉集合,ArrayList有序列有索引,Set无索引无序列
put()添加映射关系
Map的映射 如果键相等就直接覆盖,返回覆盖前的值
containKey()//判断键是否存在
containValue()//判断值是否存在
remove(Key)//返回对应Key的值然后在删除
整理set
不允许重复,并且没有索引
hashSet实现Set
可以用迭代器遍历
整理Map
hashMap实现Map
不允许重复,双列存储格式
遍历方式
增强for(根据键查找它对应的值)map.get(K);
entrySet();
entry是Map的内部类、
使用方式
Set<Map.entry<K,V>> set = map.entry();
for(Map.entry<K,V> entry : set){
k.getKey();
v.get value();//内部类的特有方法
syso(k+v);//
}
多重嵌套Map<String,Map<Integer,String>> map = new HashMap<>();
分析
1,先获取map的键
Set<String>set = map.keySet();
for(String str : set){
String s = str;
syso("就业班"+str)
Map<Integer,String> map2 = map.get(str);
//依次类推
}
递归
5*5
斐波那契列数
result = (n-1)+(n-2);
异常
Throwable(最顶层)
Error 系统不能处理 比较严重的错误
Exception 系统可以处理的异常
编译时异常
当不符合编译器规范为编译时异常
运行时异常
当运行时出现的异常
jvm处理异常方式
如果我们没有处理异常,jvm会终止我的程序,然后把异常类型,原因输出在控制台
语法规则
try{
}catch(){//调用catch方法创建错误对象
处理异常
}
fanily{
}
Thorwable
e.getMessage
e.toString();
e.PrintStackTrace;
finally 目的就是程序的收尾,释放资源 一定会执行
如何定义异常
异常也是一个对象
继承超类
重写有参数无参数构造
|
|