收藏 分享(赏)

java基础知识详细整理(图文并茂深入浅出).pdf

上传人:HR专家 文档编号:5594275 上传时间:2019-03-09 格式:PDF 页数:21 大小:1.57MB
下载 相关 举报
java基础知识详细整理(图文并茂深入浅出).pdf_第1页
第1页 / 共21页
java基础知识详细整理(图文并茂深入浅出).pdf_第2页
第2页 / 共21页
java基础知识详细整理(图文并茂深入浅出).pdf_第3页
第3页 / 共21页
java基础知识详细整理(图文并茂深入浅出).pdf_第4页
第4页 / 共21页
java基础知识详细整理(图文并茂深入浅出).pdf_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、 JSE 第一部分 分享者 :张振羽 2017.6.30 JSE 第一部分 张振羽 2017 1.什么是 JDK API (1) Application Programming Interface ,应用程序编程接口 (2) 是一些预先定义的 函数 ,开发人员 可提供直接调用的功能。 2.JDK 包结构 便于维护,按照功能划分,不同功能的累划分在不同功能的包中,常用的包如下表: 包 功能 java.lang 基础类,字符串,多线程,这个包不用 import java.util 集合、随机数、日历、时钟等 java.io 文件操作,输入输出流 网络操作 java.math 数学运算 java.

2、security 安全相关 java.sql 数据库访问 java.text 处理文字、信息的格式 3.字符串的基本操作 3.1 String 及其 API int indexOf(String str) 在字符串中检索 str,返回其第一次出现的位置如果找不到返回 -1 int indexOf(String str, int a) 返回字符串 str 中从下标为 a 开始寻找,第一次出现 str 的下标; str.length(); 用于返回字符串 str 的长度,返回类型是 int 类型,空格也是一个字符 str.lastIndexOf(String str); 返回字符串 str 中最后

3、一次出现 string 的下标; str.subString(int start,int end) 取出 str 中从下标为 start 开始,到 end 结束的字符串,返回的是一个字符串类型 str.subString(int start,int end); 取出 str 中从下标为 start 开始,到 end 结束的字符串,返回的是一个字符串类型; str.subString(int start); 字符串 str 中从 start 一直截取到结尾 str.trim(); 去掉字符串开始和结尾的空字符串 str.CharAt(int index); 用于返回在 str 字符串中,指定下标

4、 index 处的字符,返回的类型是char;可以用来判断回文; str.starsWith(String string) 判断字符串 str 中是否是以 string 开始的,返回的类型是 boolean类型; str.endsWith(String string); 判断字符串 str 中是否是以 string 结束的,返回的类型是 boolean类型 str.toUpperCase(); 将字符串 str 所有字母都转换为大写,返回的类型为 String 类型; str.toLowerCase(); 将字符串 str 所有字母都转换为小写,返回的类型为 String 类型; String

5、.valueOf(int value); 将基本类型的 value 转换为字符串类型,不只是 int 类型,其他的也可以,这是一个静态方法,因此调用时使用类名来调用; JSE 第一部分 张振羽 2017 3.1.1 String (1) String 是不可变对象 (2) java.lang.String 使用了 final 修饰,不能被继承。 (3)字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中 (4) 任何一个字符对应 2 个字节的长度, 1 个字节 = 8 位二进制。 3.1.2 String s=new String (“ abc” ) (1) 众所周知,答案是 :创建两

6、个对象 (2) why? 举例子: 分析 步骤: a) 栈中开辟一块空间存放引用 str1(地址信息) ; b) String 池中 有 一块空间,存放 String 常量 “abc“; c) 引用 str1 指向池中 String 常量 “abc“; d) str1 所指代的地址即常量 “abc“所在地址,输出为 true; 结论:创建了一个引用对象 str1 JSE 第一部分 张振羽 2017 分析 步骤: 1) 栈中开辟一块空间存放引用 str3; 2) 堆中开辟一块空间存放一个新建的 String 对象 “abc“; 3) 引用 str3 指向堆中的新建的 String 对象 “abc

7、“; 4) str3 所指代的对象地址为堆中地址,而常量 “abc“地址在池中,输出 false; 3.2 StringBuilder 常见 API builder.append(String string) 追加 builder.insert(int num,String string) 插入 builder.delete(int start,int end) 删除 builder.replace(int start,int end,String string); 替换 StringBuffer reverse(); 字符串反转 注意:含头不含尾 JSE 第一部分 张振羽 2017 3.2.

8、1 StringBuiler 特点 (a) JDK1.5 出现 StringBuiler (b) StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用 (c) 线程不安全 3.2.2 String 、 StringBuiler、 StrngBuffer 三者区别 (a) String 长度不可变, StringBuiler 和 StringBuiler 长度可变 (b) 每一次对 String 操作改变,都会创建新的对象,而后两个不生成新的对象 (c) StringBuiler 和 StringBuiler 创建必须通过关键字 new 来创建, String 可以不用 ne

9、w,可以直接赋值 (d) StringBuffer 线程安全 ,多线程操作 时 ,使用 StringBuffer 安全 。 StringBuilder 线程不安全 ,单线程操作 时 ,使用 StringBuilder 效率高。 。 3.3 基本数据类型包装类 byte 1 字节 Byte Short 2 字节 Short int 4 字节 Integer long 8 字节 Long float 4 字节 Float double 8 字节 Double char 2 字节 Character Boolean 1 字节 Boolean 注意:基本数据类型对象包装类都有 XXX parseXXX

10、 方法,只有一个类型没有 parse 方法: Character 。 4.正则 4.1 正则 (1) 正则本身也是字符串 (2) 用于匹配字符串中字符次序的 “规则字符串 “ (3) 很多编程语言 ,包括 Java 都支持了正则表达式 JSE 第一部分 张振羽 2017 4.2 字符集 abc 表示 a,b,c 中的任意一个字符 abc 表示除了 a,b,c 以外的任意字符 a-z 表示 a,b,c, ,z 中的任意一个字符 a-zA-Z0-9 表示 az,AZ,09 中的任意一个字符 a-z 将字符串中符合正则表达式的字符串替换为 str 4.4 经典的正则 案例 匹配电话号码 (0086|

11、+86)?s?1d10 匹配图片格式 w+.(png|jpg|jpeg|gif) 检查一个字符串是否是 整数数组类型 ints* 注意 : 在使用 时候要注意 , 在 Java 字符串中需要转意为 5.Object 5.1 toString ( a) 该方法 java 希望我们重写时返回一个字符串,这个字符串的原则为 :用一个字符串来描述当前对象 . ( c) 因为 Object 实现的 toString()方法不具备什么实际开发意义,所以若我们需要在子类中使用该方法时通常我们会重写它 JSE 第一部分 张振羽 2017 举例子: (3)重写 toString (a)没有重写结果 (a)重写后

12、结果 5.2 equals Object 提供了比较 两个对象 是否相等方法 equals: 1. 默认的 equals 不能比较对象中数据是否相等建议子类重写这个方法 ! 2. 重写时候 , 按照关键数据比较两个对象是否相等 举例: 不重写 equals 方法: JSE 第一部分 张振羽 2017 3重写 equals 方法应遵循几个规则 : (a) 任何对象与 null 比较都应返回 false (b) 两个对象不属于同一个类时应返回 false (c) 同一个对象 equals 比较应当恒等为 true 5.3 equals 与 = 的区别 (1) “=“是变量值比较, (2) 对于引用

13、类型变量而言,该变量保存的是对象的地址 (3 两个变量的地址是否相等,换句话说就是看两个变量引用的是否为同 一个对象 ( 2) equals 是内容比较 ( 4) 对于两个引用变量而言,是比较两个变量所引用的对象内容是否相同 举例 : 没有 toString 的情况下输出 p 和 p1 JSE 第一部分 张振羽 2017 6.日期 及常用 API 6.1 Date 及常用 API 6.2 SimpleDateFormat 6.3 Calenda (1) Calendar 本身是抽象类 ,规定了操作时间的方法定义 . (2) 常用实现类 GregorianCalendar,即 :阳历立法 (3)

14、 Calendar 提供了一个静态方法 getInstance 来根据 (4) 获取 和设置 时间分量 注意:老外的周日是中国的周一 JSE 第一部分 张振羽 2017 7 .集合 7.1 什么是集合 ( 1) java 提供了一种可以存数一组数据的数据结构 . ( 2) 集合 ,用来存储一组元素 ,提供了相关操作元素的方法 . JSE 第一部分 张振羽 2017 (3) Collection(接口) 有两个常见的子接口 : List:可重复集 ,且有序 . 常用的有 : ArrayList 和 LinkedList 实现类 Set:不可重复集 ,大部分实现类是无序的 . 7.2 集合和数组的

15、区别 (1) 数组是固定长度的;集合可变长度的。 (2) 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 (3) 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。 7.3 ArrayList 和 LinkedList 的区别 1.ArrayList 是实现了基于动态数组的数据结构, LinkedList 基于链表的数 结 构。 2.对于随机访问 get 和 set, ArrayList 觉得优于 LinkedList,因 LinkedLis 要移动指针。 3.对于新增和删除操作 add 和 remove, LinedList 比较占优势,因

16、ArrayList要移动数据。 问题:为什么 ArrayList 随机访问快,而 LinkedList 增删快? 7.4 什么是数据结构 (1)Java 中常用的结构:数组、链表、栈、队列 (2)是指相互之间存在一种或多种特定关系的 数据元素 的集合 (3)特定语法组成的程序 +针对不同的事物制定的不同算法。 7.5 ArrayList 数据结构 (数组) 举例子: 它在内部的数据结构即为数组,类似下面: JSE 第一部分 张振羽 2017 int arrays = 2,4,6,8, 假设 ,使数组变成 2, 4, 5, 6, 8 。 ArrayList 内部 实现 : (1) 动态扩大数组

17、。 (2) 将原来数组索引为 “ 2” 及其后面所有的元素向后移动 。 (3) 新元素 5 到索引为 2 的位置。 7.6 LinkedList 链表结构 7.6.1 链表: (a) 是在非连续的内存单元中保存数据,并且通过指针将各个内存单元链接在一起。 (b) 链表不需要提前分配固定大小存储空间,当需要存储数据的时候分配一块内存并将这块内存插入链表中。 7.6.2 链表 分类 (a)单向链表 JSE 第一部分 张振羽 2017 (b)双向链表 (c)循环链表 LinkedList 内部其实做了下面这些事情: (a) 对半查找出原来索引为 2 的节点将其前驱改为新增节点 5; (b) 将新增节

18、点 5 的前驱改为 4,后继改为 6;节点 4 的后继改为 5。 JSE 第一部分 张振羽 2017 7.7 栈结构 栈结构: (1)栈用来存储一组元素 ,但是存取元素必须遵循先进后出原则 (2)栈结构常被用来实现 “后退 “功能 ( 3) Deque 是双端队列 ,但是若只从一段进出队就实现了栈结构 . JSE 第一部分 张振羽 2017 7.8 队列 结构 Deque 队列只允许在队尾添加数据,在队头删除数据 。但是可以查看队头和队尾的数据。还有一种是双端队列, 在两端都可以插入和删除 : JSE 第一部分 张振羽 2017 7.9 集合 常用的 API boolean s=c.add(“

19、 one”) ; 向集合 c 中添加元素 one int size = c.size() 返回集合 c 中的元素的个数 boolean isEmpty = c.isEmpty() 判断集合 c 中是否不含有任何元素 c.clear(); 清空集合 c boolean contains = c.contains(p) 判断集合 c 中是否含有 p 元素 c1.addAll(c2); 将 c2 中全部的元素合并到 c1 中 c1.containsAll(c2) C1 是否包含 c2 list.set(2, “Mac“) 将指定位置的元素进行替换 ,返回被替换的元素 list.remove(2);

20、删除序号为 2 的元素 , 返回被删除的元素 list.subList(1, 1+4); 从一号位开始连续获得四个元素 7.10 集合的遍历 三种方式 : (1) 迭代器 如果要增加删除元素,需要用迭代器的 API,若用集合的 API,会抛出异常 Exception in thread “main“ java.util.ConcurrentModificationException 举例子: JSE 第一部分 张振羽 2017 (1) 集合的 get 方法 (3) 增强 for 循环 7.11 集合 转为数组 7.11 集合转为数组 JSE 第一部分 张振羽 2017 注意: 原因: 1. 集

21、合 与数组共享存储空间 2. 不是完整功能的 List, 不能改变长度 7.12 集合排序 案例 1: Collections.sort(list) 自然排序 JSE 第一部分 张振羽 2017 案例 2: 自定义排序 如何比较两个对象的大小? 7.13 Map 7.13.1 面试 谈谈你对 map 的认识 (1) Map 是个 接口 , 没有继承于 Collection 接 口 。 (2) Map 提供了一种映射关系,其中的元素是以键值对( key-value) 的形式存储的,能够根据 key 快速查找 对应的 value。 (3) Map 中的键值对以 Entry 类型的对象实例形式存在;

22、 (4) key 值 不可重复, value 值可以重复,一个 value 值可以和很多 key 值形成对应关系,每个建最多只能映射到一个值。 (5) Map 支持泛型,形式如: Map (6) 连个实现类 HashTable, HashMap JSE 第一部分 张振羽 2017 7.13.2 谈谈 HashTable 和 HashMap hashmap hashtable 线程不安全 线程安全 允许有 null 的键和值 不允许有 null 的键和值 效率高一点 效率稍低 方法 没有 Synchronize 修饰 方法是 Synchronize 修饰 有 containsvalue 和 co

23、ntainsKey 方法 只 有 contains 方法 HashMap 是 Map interface 的一个实现 Hashtable 继承于 Dictionary 类 HashMap 是 Hashtable 的轻量级实现 Hashtable 比 HashMap 要旧 7.13.3 常用的 API 添加元素 map.put(“语文 “, 99); 根据键获得值 map.get(“语文 “); 删除 map.remove(“语文 “); 判断是否有 key boolean containsKey = map.containsKey(“语文 “); 判断是否有 value boolean containsValue = map.containsValue(99); 7.13.3 遍历 Map 有三种方式 : 1:遍历所有的 key 2:遍历所有键值对 3:遍历所有的 value(相对前两种不太常用 ) JSE 第一部分 张振羽 2017

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报