java基础知识详细整理(图文并茂深入浅出)
- 格式:pdf
- 大小:1.57 MB
- 文档页数:21
JSE第一部分
分享者:张振羽
2017.6.30
1.什么是 JDK API
(1) Application Programming Interface ,应用程序编程接口
(2) 是一些预先定义的函数,开发人员可提供直接调用的功能。
2.JDK包结构
便于维护,按照功能划分,不同功能的累划分在不同功能的包中,常用的包如下表:
3.字符串的基本操作
3.1 String 及其API
3.1.1 String
(1) String是不可变对象
(2) ng.String使用了final修饰,不能被继承。
(3)字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中
(4) 任何一个字符对应2个字节的长度,1个字节 = 8位二进制。
3.1.2 String s=new String (“abc”)
(1) 众所周知,答案是:创建两个对象
(2) why?举例子:
分析步骤:
a) 栈中开辟一块空间存放引用str1(地址信息);
b) String池中有一块空间,存放String常量"abc";
c) 引用str1指向池中String常量"abc";
d) str1所指代的地址即常量"abc"所在地址,输出为true;
结论:创建了一个引用对象str1
分析步骤:
1) 栈中开辟一块空间存放引用str3;
2) 堆中开辟一块空间存放一个新建的String对象"abc";
3) 引用str3指向堆中的新建的String对象"abc";
4) str3所指代的对象地址为堆中地址,而常量"abc"地址在池中,输出false;
3.2 StringBuilder常见API
3.2.1 StringBuiler特点
(a)JDK1.5出现StringBuiler
(b)StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用
(c)线程不安全
3.2.2String 、StringBuiler、StrngBuffer三者区别
(a) String长度不可变,StringBuiler和StringBuiler长度可变
(b) 每一次对String操作改变,都会创建新的对象,而后两个不生成新的对象
(c) StringBuiler和StringBuiler创建必须通过关键字new来创建,String可以不用new,可以直接赋值
(d) StringBuffer线程安全,多线程操作时,使用StringBuffer 安全。
StringBuilder线程不安全,单线程操作时,使用StringBuilder 效率高。。
注意:基本数据类型对象包装类都有 XXX parseXXX 方法,只有一个类型没有parse方法:Character 。
4.正则
4.1正则
(1) 正则本身也是字符串
(2) 用于匹配字符串中字符次序的"规则字符串"
(3) 很多编程语言,包括Java都支持了正则表达式
4.2字符集
4.3常用 API
4.4经典的正则案例
5.1 toString
(a)该方法java希望我们重写时返回一个字符串,这个字符串的原则为:用一个字符串来描述当前对象.
(c)因为Object实现的toString()方法不具备什么实际开发意义,所以若我们需要在子类中使用该方法时通常我们会重写它
举例子:
(3)重写toString
(a)没有重写结果 (a)重写后结果
5.2 equals
Object 提供了比较两个对象是否相等方法equals:
1. 默认的equals不能比较对象中数据是否相等建议子类重写这个方法!
2.重写时候, 按照关键数据比较两个对象是否相等
举例:
不重写equals方法:
3.重写equals方法应遵循几个规则:
(a) 任何对象与null比较都应返回false
(b) 两个对象不属于同一个类时应返回false
(c) 同一个对象equals比较应当恒等为true
5.3 equals与 == 的区别
(1) "=="是变量值比较,
(2) 对于引用类型变量而言,该变量保存的是对象的地址
(3 两个变量的地址是否相等,换句话说就是看两个变量引用的是否为同一
个对象
(2) equals是内容比较
(4)对于两个引用变量而言,是比较两个变量所引用的对象内容是否相同
举例:没有toString的情况下输出p和p1
6.日期及常用API
6.1Date及常用API
6.2 SimpleDateFormat
6.3 Calenda
(1) Calendar本身是抽象类,规定了操作时间的方法定义.
(2) 常用实现类GregorianCalendar,即:阳历立法
(3) Calendar提供了一个静态方法getInstance来根据
(4) 获取和设置时间分量
注意:老外的周日是中国的周一
7 .集合
7.1什么是集合
(1) java提供了一种可以存数一组数据的数据结构.
(2)集合,用来存储一组元素,提供了相关操作元素的方法.
(3) Collection(接口)有两个常见的子接口:
List:可重复集,且有序.
常用的有:ArrayList和LinkedList实现类
Set:不可重复集,大部分实现类是无序的.
7.2 集合和数组的区别
(1) 数组是固定长度的;集合可变长度的。
(2) 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引
用数据类型。
(3) 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据
类型。
7.3 ArrayList和LinkedList的区别
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数结
构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因LinkedLis
要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因ArrayList 要移动数据。
问题:为什么ArrayList随机访问快,而LinkedList增删快?
7.4什么是数据结构
(1)Java中常用的结构:数组、链表、栈、队列
(2)是指相互之间存在一种或多种特定关系的数据元素的集合
(3)特定语法组成的程序+针对不同的事物制定的不同算法。
7.5 ArrayList数据结构(数组)
举例子:
它在内部的数据结构即为数组,类似下面: