本帖最后由 小石姐姐 于 2018-4-20 11:29 编辑
【石家庄校区】萌新笔记
在类中重写Object类的 toString() 和equals()方法,eclipse提供了自动重写的选项
----------------------------
API的学习:从上往下,从根到其他
所有类的根类:Object类
----------------------------
hashCode() 哈希算法,散列算法:将一种事物算成数字,一对一
----------------------------
//获取字节码对象的方式 (应用之一:反射)
Student s = new Student();
//有对象
1.Class c1 = s.getClass();
--
//以下两种无对象
2.Class c2 = Student.class;
//非常灵活和方便,使用最多
3.Class c3 = Class.forName("com.itheima.Student");//需要抛出异常
//只要是一个类的字节码对象只有一个,地址值相同,无论多少对象
//地址值均相同
c1 == c2 true;
c1 == c3 true;
类全名的手动获取:1 2 3
获取到字节码对象相当于获取到类的定义,获取类中全部成员
-----------------------------
System类 三个方法:
> static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :
从src源数组的srcPos索引开始,复制length个元素
从destPost位置开始将这些元素放至到dest数组中
> static long currentTimeMillis()
返回以毫秒为单位的当前时间
可以用来查看某一段程序运行时间:
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println("hello world");
}
long end = System.currentTimeMillis();
> static void exit(int status)
终止当前正在运行的 Java 虚拟机
-----------------------------
Date类:
构造方法:
Date():
Date(long date): 1970-1-1 0:0:0代表O
------------------------------
# SimpleDateFormat类 :更像一个工具类,只不过需要创建对象,以对象代表模式
> 构造方法:
> 创建对象 同时指定模式
- SimpleDateFormat() //默认模式
- SimpleDateFormat("yyyy年MM月dd日")
> 按照对象模式格式化Date对象
格式化方法:Date ---> String
- String format(Date d)
> 按照对象模式解析字符串
解析方法 : String ---> Date
- Date parse(String s)
-------------------------------
Calendar类 :日历类
根据日历进行计算
日历中月份从0开始
0 1 2 3 4 5 6 7 8 9 10 11
1月
通过get(int field)得到常量去对应字段 让系统根据字段判断
输入set(int field,int value)时也用Calendar类的字段去设置
ArrayList 也利用了自动装箱和自动拆箱
# 顶层开始学习 # 清溪浅水行舟,凉雨竹窗夜话
##############################结合老师笔记中体系结构 今日总结里####################################
# - 共性 #
- --------------------
ArrayList
* 集合的体系结构:
* 由于不同的数据结构(数据的组织,存储方式),所以Java为我们提供了不同的集合,
* 但是不同的集合他们的功能都是相似,不断的向上提取,将共性抽取出来,这就是集合体系结构形成的原因
*
* 体系结构:
* 怎么学习?最顶层开始学习,因为最顶层包含了所有的共性
* 怎么使用?使用最底层,因为最底层就是具体的实现
* 接口与实现类存储的都是Object类型,只是可以通过泛型进行安全性检测
*
* Collection
* List
* ArrayList
----------------------
集合可以存储所有类型的数据,泛型是为了安全性 存储的还是Object类型数据
- Collection c = new ArrayList();
- Object[] objt = c.toArray();
- 返回一个存储所有类型的数组,因为集合中存储类型就是Object
-----------------------
# - 迭代器 #:面向对象方式遍历
1. 不是操作数组,是对象调用方法(操作数组需要索引,但不是所有的集合都有索引)
1. 迭代器对象和集合对象是一对一的
1. 迭代器对象是集合对象的副本,迭代器迭代的是自己副本中的元素
- 因此可能因此引起 并发修改异常:
- 原因:
- 当使用集合对象进行修改时,迭代器对象判断出集合对象和自己长度不同,会产生并发修改异常
- 解决方法:
- 利用迭代器的修改方法进行修改元素,集合对象会自动匹配
Collection 中 Iterator没有添加方法,而且 Collection 中没有其他迭代器方法,因此作为父类引用无法调用其他迭代器方法。Iterator 子类接口 ListIterator 中迭代器具有 add()方法, List 中具有 ListIterator 方法,父类引用改为 List ,可以调用(或使用ArrayList 这就是使用时使用具体类,多态)
Collection c = new ArrayList();
Iterator it = c.iterator(); //返回此集合对象的迭代器对象
List l = new ArrayList(); //多态的机制 所以修改父类引用
ListIterator lit = l.listIterator();//返回此集合对象的迭代器对象
------------------------
##############################结合老师笔记中体系结构################################
#foreach : 增强for循环
- 一般用于遍历集合或数组
- 底层是迭代器实现的
-
for(元素的类型 变量 : 集合或者数组对象) {
可以直接使用变量;
}
#异常:安全机制
也是一种类
异常:不正常,我们在写代码的时候出现的编译或运行时的错误,帮助程序员定位错误、原因及类型
异常的体系结构:
- 关注顶层如何分类的
异常输出信息详解:
处理:
1.系统默认 :
如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行 并且还终止了程序,异常后面的代码将不在执行
2.自己手动(两种)
- 捕获处理
try...catch 语句
try{
有可能出现问题的代码;
} catch(异常类型 异常对象名){
处理异常;
}
try...catch执行顺序:
- 异常的抛出
- 谁调用方法谁处理
- 从主方法抛出异常就是让虚拟机处理
#Throwable的常用方法:
String getMessage()
String toString()
void printStackTrace()
finally:组合try...catch使用,无论是否捕获异常一定执行,用于释放资源等收尾工作 --例如:IO流的标准编写
#异常的分类:
Exception:
RunTimeException:
#throws 与 throw
throws :处理异常的一种方式,把异常抛出,由调用者来处理 ,在方法声明中
throw:制造异常的方式,并且结束方法,在方法中
- throw:
抛出一个异常对象,抛出运行时异常可以不处理,运行时JVM会抛出并停掉程序
抛出编译时异常必须处理,throws 或者try...catch
#异常的抛出与处理原理:
当不满足条件或者出错时 需要throw一个异常对象(通过创建匿名对象,调用构造方法,所有子类的构造方法均super(...)父类RunTimeException或Exception)
构造方法中的参数是为了给父类提供原因 即 String getMessage() 的返回值。抛出的异常解决方法参考上文
#自定义异常类 (来处理自己的异常,给出原因)
-继承 Exception:
定义不同的构造方法,来向父类提供原因,抛出此异常的对象时需要立即处理
-继承 RunTimeException:
定义不同的构造方法,来向父类提供原因,抛出此异常的对象时可以不立即处理
-------------------------------------------
#递归
|
|