一、开局一张图
二、基础的零零碎碎
path
指定访问的路径path
使用Java的软件tomcat,知道Java的安装位置- 在地址栏输入cmd,在当前目录运行命令提示符窗口
- tab键自动补全,上键重复上一命令
- 类里面可以存在六种修饰方法
static
(静态)是指静态变量,生命范围大于作用范围。- 方法前面加
static
是指这个方法属于整个类。 - 类的作用,保存代码
- Java命令后跟类名
class path
指定字节码文件的位置,即类的位置- Java有两种数据类型
- 基本数据类型,
- 数值型
整型、浮点型- 非数值型
字符型、布尔型
- 引用数据类型,接口,类,数组
- 不要过度依赖于注释。要写易懂的代码
- 单
&
符号没有短路作用,会报空指针。双&&
符号会产生短路运算,不会报空指针。即双&&
表达式前半部分为false
时,后面的表达式不再计算。 - 换行符,续行符。空语句。
if
循环只支持布尔判别式else if
执行效率高于if
语句执行效率。switch
语句中,括号内key
的数据类型是整型和能自动转换为整型的数据类型。- 漏泄
break
语句,跑穿问题。 switch
语句可以解决多选多问题,即break
不能去掉。while
循环的可读性高于do while
循环,即while
循环更常见。for
循环常用于定长循环。while
用于标志循环。break
跳出离他最近的括号外,continue
跳出离他最近的括号内。return
也可以跳出循环。- 函数是一个有特定输入输出可以重复利用的代码段。
- 函数的七个要素,权限修饰符,
static/final/abstract
,返回类型,方法名称,形参列表,throws
异常列表,方法体。 - 函数的返回类型,方法名称,形参列表不可缺。
- 一个方法尽可能实现单一功能。
- 递归常用于树形结构遍历。
- 队列用于数据缓冲。
- 数组是有同质化,有序化特征的集合。
- 数组的初始化有静态初始化
{}
,在编译过程中数组的大小已经确定。 - 数组的动态初始化。
new
数据类型[length]
。 - 数组初始化的过程就是分配内存空间的过程。
- 非动态数组语言长度固定。
- 面向对象编程有封装,继承,多态,定义类,创建对象的特性。
- 内部类分为
static
内部类、成员内部类、局部内部类。 - 包的作用:防止类名重复。
- 参数越少,构造方法优先级越高。
- 接口时类的一种特殊形式。
static
代码块在类载入虚拟机的时候执行一次。
- 首次创建对象
- 访问static成员
- 载入子类会引起父类的加载
- 类不加
public
同包可见,加public
修饰符,所有的类都可见。 - 封装的优点有,安全性高,可维护性高。
- 继承的本质是扩展。在原有的父类基础上扩展。
- 继承就是把子类的共有属性抽象到父类。
- 继承的目的就是为了白盒复用。
- 白盒复用破坏了继承的安全性。
- 继承并不多见,是由于Java继承是单继承,笨拙,只能子类继承父类。
- 树形结构,每个节点都有0个或1个前驱,有0个或多个后继,这种结构就叫树形结构。
- 多态,同名方法有不同的功能。
- 方法重载:两同三不同,同名,同一个类,参数个数,类型,顺序不同。参数名称不同不会构成重载,仅是返回类型不同,不会构成重载。
- 子类中方法不能和父类中的同名方法重载,但是可以和子类继承下来的父类同名方法重载。
- 方法重载就是静态多态,在编译过程中实现多态。
- 方法重写,两同两不同。两同,同名,同参方法,一不同,继承链上的不同类。两小一大,父类对象可以被子类对象替换,异常列表可以变小。权限修饰符可以变大。
- 能用父类的地方一定能被子类对象替换。
this
关键字,在本类实例方法,构造方法,表示当前对象。This()
只能在构造方法首行使用,调用本类的其他构造。final
类不能被继承。final
变量值不可改变。final
方法不能被重写。抽象类
不能被实例化。抽象方法
,没有方法体。- 抽象类等着被继承,是
is
关系。接口是have
关系,是有的关系。 - 抽象类和接口的成员不同。
- 接口可以多继承,类只能单继承。
- 类名一般是两个单词,名词在前,动词在后。
- 类名首字母大写,最常用的变量名就是类名首字母小写。
面向接口编程
- 在
添加
和删除
时,链表的性能优于数组。 - 在
查询数据
时,数组的性能优于链表。 - 将要输出的界面信息定义为一个字符串,操作数少。
- 柿子捡软的捏,任务挑容易的先完成。
equals
方法使用时,可将输入的值放在后面,避免空指针异常。- 布尔类型默认假出口为
false
。 split
表达式,其实就是一个正则表达式。*
^
|
等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\\
加以转义。
如果使用多个分隔符则需要借助 | 符号,如二所示,但需要转义符的仍然要加上分隔符进行处理
- 字符串处理类,数字处理类,日期类,集合,文件处理类。
toString
就是对自身的描述。static
不加,所有的对象都有自己的属性。String
值不可改变。String Buffer/StringBiuder
可以改变内容。- JDK5之后执行自动装箱。
int
可以自动转化为integer
。 - 向上取整即数轴上向右取整。
- 自动装箱: 就是将基本数据类型自动转换成对应的包装类。
- 自动拆箱:就是将包装类自动转换成对应的基本数据类型。
- 自动装箱都是通过包装类的
valueOf()
方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。 - 集合中存储对象,不能存储基本数据类型。
- 把基本数据类型放入集合类中的时候,会进行自动装箱。
- 包装类与基本数据类型进行比较运算,是先将包装类进行拆箱成基本数据类型,然后进行比较的。
- 两个包装类型之间的运算,会被自动拆箱成基本类型进行。
- toString()方法在Object类中定义,其返回值是String类型,返回类名和他的引用地址。
- 任何类中,都可以直接使用Object类中定义的方法。
- String Buffer/StringBiuder
- 1)首先String、StringBuffer、StringBuilder在JDK中都被定义为final类,这意味着他们不可以被继承。
- 2)String最常见,与StringBuffer相比,String的性能较差,因为对String类型进行改变的时候都会重新生成一个新的String对象,这在字符串拼接操作时很明显,因此内容经常改变的字符串不应该使用String,如果不考虑多线程,则应使用StringBuilder。
- 3)StringBuffer生成一个对象后,在进行字符串拼接操作时,调用append方法即可,不会产生新的对象,仅对对象本身进行操作,性能比String要高。另外StringBuffer是线程安全的,因此适合在多线程中使用,也正因为如此,速度跟StringBuilder相比会比较慢。
- 4)StringBuilder的使用方法跟StringBuffer类似,但其是非线程安全的,因此一般常用于单线程,效率比StringBuffer高。
综上所述,选择哪个,需要从内存性能、线程安全、执行效率等多方面考虑,从上面的几条对比中可以得出答案。
三、JCF(Java Collection Framework),Java容器框架
(一)Collection和Collection Framework
- 容器:能够存放数据的空间结构
- 数组/多维数组,只能线性存放
- 列表/散列集/树/……
- 容器框架:为表示和操作容器二规定的一种标准体系结构
- 对外的接口:容器中能存放的抽象数据类型
- 接口的实现:可复用的数据结构
- 算法:对数据的查找和排序
容器框架的优点:提高数据存取效率,避免程序员重复劳动
(二)接口
- JCF的集合接口是Collection
- add增加
- contains包含
- remove删除
- size数据元素个数
- iterator迭代器
- JCF的迭代器接口Iterator
- hasNext判断是否有下一个元素
- next获取下一个元素
- remove删除某一个元素
(三)主要类
- JCF主要的数据结构实现类
- 列表(List,ArrayList,LinkedList)
- 集合(Set,HashSet,TreeSet,LinkedHashSet)
- 映射(Map,HashMap,TreeMap,LinkedHashMap)
- JCF主要的算法类
- Arrays:对数组进行查找和排序等操作
- Collections:对Collection及其子类进行排序和查找操作。
四、List常用API
java.util.List接口中一些常用的API。
方法 | 返回值类型 | 方法说明 |
---|---|---|
add(E e) | boolean | 将指定的元素追加到此列表的末尾(可选操作) |
add(int index,E element) | viod | 将致电给的元素插入此列表的指定位置 |
clear() | void | 删除列表中的所有元素 |
contains(Object o) | boolean | 如果此列表中包含指定的元素,返回true,否则返回false |
get(int index) | E | 返回此列表中指定位置的元素 |
isEmpty() | boolean | 如果列表不包含元素,则返回true,否则返回false |
indexOf(Object o) | int | 返回此列表中指定元素第一次出现的索引,如果列表不包含元素,则返回-1 |
lastIndexOf(Object o) | int | 返回此列表中指定元素最后一次出现的索引,如果此列表不包含元素,则返回-1 |
remove(index) | E | 删除该列表中指定位置的元素,同时返回该元素 |
remove(Object o) | boolean | 从列表中删除指定元素的第一个出现 |
size() | int | 返回此列表中的元素数 |
toArray() | Objecyt[] | 返回包含此列表中所有元素的数组 |