1.常用的DOS命令
dir:列出当前目录下的文件以及文件夹
md :创建目录
rd :删除目录
cd :进入指定目录
cd.. : 退回到上一级目录
cd\ : 退回到根目录
del :删除文件
exit :退出dos命令行
2.JDK、JRE、JVM关系
JDK = JRE + 开发工具集(例如Javac编译工具)
JRE = JVM + JavaSE标准类库
3.方法的重载
概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表,且参数列表必须不同。
4.四种访问权限修饰符
① 4种权限可以修饰类部结构(属性、方法、构造器、内部类)
② 修饰类:default 、public
修饰符
类内部 同一个包 不同包的子类 同一个工程 private yes default yes yes protected yes yes yes public yes yes yes yes
5.异常处理
①分类:
Error:Java虚拟机无法解决的严重问题,如JVM系统内部错误,资源耗尽等严重问题。比如StackOverflow 和 OOM。
Exception:其他因编程错误或者偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理 例如:空指针访问、网络连接中断,数组角标越界。
②异常体系结构:
java.lang.Throwable
|-----java.lang.Error:一般不编写针对性代码进行处理
|----java.lang.Exception:可以进行异常处理
|-------编译时异常
|-------IOException
|-------ClassNotFoundException
|-------运行时异常
|-------NullPointerException
|------ArrayIndexOutOfBoundsException
③异常处理:抓抛模型
过程一:"抛",程序在正常执行的过程种,一旦出现异常,就会在异常代码处生成一 个对应异常类对象,并将此对象抛出。一旦抛出对象以后,其后代码就不再 执行。
过程二:“抓”,可以理解为异常的处理方式 ①try-catch-finally ②throws
④手动抛出异常:
1.继承于现有的异常结构:RuntimeException 、Exception
2. 提供全局常量:serialVersionUID
3.提供重载构造器
6.Java集合
6.1:数组在存储多个数据的特点:
①一旦初始化以后,其长度就确定
②数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据
6.2:数组在存储多个数据方面的缺点:
①一旦初始化以后,其长度就不可修改
②数组中提供的方法非常有限,对于添加、删除、抽入数据等操作,非常不便,同 时效率不高
③获取数组的实际元素的个数的需求,数组没有现成的属性或者方法可以
④数组存储数据的特点:有序、可重复。对于无序、不可重复的需求,就不能满足
6.3:Java集合可分为Collection 和Map 两种体系:
Collection接口: 单列数据,定义了存取一组对象的方法的集合
List: 元素有序、可重复的集合
Set:元素无序、不可重复的集合
Map接口:双列数据,保存具有映射关系的“key-value“的集合
6.4 集合框架
|-------Collection接口:单列集合,用来存储一个一个的对象
|-------List接口:存储有序的、可重复的数据
|-------ArrayList:最为List主要实现类,线程不安全的,执行效率 高;底层使用Object[] elementData存储
jdk 7情况下:
a. ArrayList list = new ArrayList(); 地产创建了长度为10的Object数组
b.list.add(11) 如果此次的添加导致底层elementData数组容量不够, 则扩容,默认情况下,扩容为原来的容量的1.5倍,同时需要将原来的 数组复制到新的数组。
jdk 8情况下:
a.ArrayList list = new ArrayList(); 底层Object[ ] element初始化为{}
并没有创建对象
建议:开发中使用带参构造器 ArrayList list = new ArrayList(int capacity)
|-------LinkedList:底层使用双向链表存储(对于频繁插入、删除操 作使用此类ArrayList效率高
|-------Vector:古老实现类,线程不安全,效率低;底层使用 Object[] elementData存储
|-------Set接口:存储无序、不可重复的数据
|-------HashSet:作为set接口主要实现类;线程不安全的,可以存 储null
|-------LinkedHashSet:作为HashSet的子类;遍历其内部数 据时,可以按照添加顺序遍历
|-------TreeSet:可以按照添加对象的指定属性,进行排序
|------Map接口:双列集合,用来存储一对(key-value)一对数据
|--------HashMap:作为Map的主要实现类;线程安全的。可以存储 null的key和value
|---------LinkedHashMap:保证遍历map元素时,可以按照添 加的顺序实现遍历;(对于频繁的遍历操作)
|--------TreeMap:按照key,排序遍历
底层使用红黑树
|---------Hashtable:作为古老实现类;线程不安全的。不能存储 null的key和value
|---------Properties:常用来处理配置文件。key和value都是 String类型
hashMap底层:数组+链表(jdk7及之前)
数组+链表+红黑树(jdk8)
6.5 Collection接口方法
①contains()是否包含对象 调用equals()方法
②containsAll(Collection coo):判断形成coo中的所有元素是否存在于 当前集合中。
③retainAll(Collection coo) :交集 获取当前集合和coo集合交集并返回给 调用方法对象。
④ toArray() 集合---------》 数组 数组-----------》集合 asList()
⑤iterator(): 返回iterator接口的实例,用于遍历集合元素
a.内部的方法:hasNext()和next()
b. 集合对象每次调用iterator()方法都得到一个全新的迭代器对象
默认游标都在集合的第一个元素之前
c.Iterator接口remove()方法
⑥使用Foreach循环遍历集合元素
8.泛型
8.1如何自定义泛型结构:泛型类、泛型接口、泛型方法
1.泛型方法
2.泛型类
a.如果定义了泛型类,实例化没有指定类的泛型,则认为此泛型类型为Object 类型;
b.泛型不同的引用不能相互赋值
c.泛型的指定中不能使用基本数据类型,可以使用包装类型
d.在类/接口上声明的泛型,本类或者本接口中即代表某种类型,可以作为非静 态属性的类型、非静态方法的参数类型、返回值类型。但在静态方法中不能使用 类的泛型
e.异常类不能泛性的
8.2通配符
a.通配符:?
G<A> 和 G<B> 是没有关系的。二者共同父类是:G<?>
b.有限制条件的统配符:
① ? extends A:
G<? extends A> 可以作为G<A> 和G<B>的父类,其中B是A的子类
② ?super A:
G<? super A> 可以作为G<A> 和G<B>的父类,其中B是A的父类