JavaSE笔记
文章目录
- JavaSE笔记
-
- 第一章 初识Java
-
- 1.1 java发展史
- 1.2 特点
- 1.3 语言特性
- 1.4 JDK、JRE、JVM三者关系
- 1.5 Java加载与执行
- 1.6 DOS基本命令
- 1.7 常用快捷键
- 1.8 Java环境搭建
- 1.9 注释
- 第二章 数据相关
-
- 2.1 标识符与关键字
- 2.2 变量
-
- 2.2.1 字面量
- 2.2.2 变量
- 2.3 数据类型
-
- 2.3.1 定义
- 2.3.2 8种基本数据类型区别
- 2.3.3 数据类型注意事项
- 2.3.4 字符编码
- 2.3.5 转义字符
- 2.4 运算符
-
- 2.4.1 算数运算符
- 2.4.2 关系运算符
- 2.4.3 逻辑运算符
- 2.4.4 赋值运算符
- 2.4.5 三目运算符
- 2.4.6 移位运算符
- 2.4.7 字符串拼接
- 2.4.8 优先级
- 第三章 控制语句
-
- 3.1 键盘输入语句
- 3.2 if语句
- 3.3 switch语句
- 3.4 for语句
- 3.5 while语句
- 3.6 do while语句
- 第四章 方法
-
- 4.1 语法
- 4.2 方法的内存层面
- 4.3 方法重载overload
- 4.4 方法递归
- 第五章 面向对象
-
- 5.1 类
-
- 5.1.1 类和对象的关系
- 5.1.2 类的创建
- 5.1.3 类的实例化(创建对象)
- 5.1.4 (内存)运行过程
- 5.1.5 构造方法
- 5.2 封装
-
- 5.2.1 什么是封装
- 5.2.2 封装步骤
- 5.3 继承
-
- 5.3.1 继承机制
- 5.3.2 继承特性
- 5.3.3 方法覆盖(重写)
- 5.4 多态
-
- 5.4.1 什么是多态
- 5.4.2 基础语法
- 5.4.3 instanceof运算符
- 5.5 this和super
- 5.6 修饰符
-
- 5.6.1 权限修饰符
- 5.6.2 特征修饰符
-
- static
- final
- abstract(抽象类)
- interface(接口)
- 5.7 Object类
-
- 5.7.1 toString()
- 5.7.2 equals()
- 5.7.3 finalize
- 5.8 包和import
-
- 5.8.1 package
- 5.8.2 import
- 5.8.3 JDK常用包
- 5.9 内部类
- 第六章 数组
-
- 6.1 数组简介
-
- 6.1.1 数组扩容
- 6.2 数组常用算法
-
- 6.2.1 冒泡排序
- 6.2.2 选择排序
- 6.2.3 数组二分法查找
- 6.4 Arrays工具类
-
- 6.4.1 Arrays.length 数组长度
- 6.4.2 Arrays.sort 数组排序(小到大)
- 6.4.3 Arrays.binarySerch() 二分查找
- 6.4.4 Arrays.toString() 数组的打印
- 6.4.5 Arrays.fill() 数组的填充
- 6.4.6 Arrays.equals() 判断两个数组大小是否相等
- 6.4.7 Arrays.copyOf() 数组的拷贝
- 第七章 常用类
-
- 7.1 String
-
- 7.1.1 String 特点
- 7.1.2 String 常用方法
- 7.2 StringBuffer 和 StringBuilder
- 7.3 包装类
- 7.4 日期类
-
- 7.4.1 Date类
- 7.4.2 SimpleDateFormat类
- 7.4.3 Calendar类
- 7.5 数字类
-
- 7.5.1 Math类
- 7.5.2 BigDecimal类
- 7.6 Random
- 7.7 枚举
-
- 7.7.1 枚举常用方法
- 7.7.2 枚举的高级使用
- 7.7.3 枚举中的抽象类
- 7.7.4 枚举的其他用法
- 第八章 异常
-
- 8.1 异常的分类
-
- 8.1.1 什么是Throwable
- 8.1.2 Exception及其子类
- 8.2 异常的捕获
-
- 8.2.1 try、catch 和 finally
- 8.2.2 获取异常信息方法
- 8.3 throw和throws
- 8.4 自定义异常
- 第九章 集合
-
- 9.1 集合的结构
-
- 9.1.1 集合概述
- 9.1.2 集合继承关系
- 9.1.3 集合和数组的区别
- 9.2 Iterable和Collection
-
- 9.2.1 Iterable接口
- 9.2.2 Collection接口
- 9.3 List
-
- 9.3.1 ArrayList(数组)
- 9.3.2 LinkedList(双向链表)
- 9.4 Set
-
- 9.4.1 哈希表、二叉树
- 9.4.2 HashSet(Hash 表)
- 9.4.3 TreeSet(二叉树)
- 9.4.4 LinkHashSet(HashSet+LinkedHashMap)
- 9.4.5 小结
- 9.5 Map
-
- 9.5.1 HashMap
- 9.5.2 TreeMap
- 9.6 Collections工具类
- 9.7 泛型
-
- 9.7.1 泛型的使用
- 9.7.2 JDK8 泛型新特性
- 第十章 IO流
-
- 10.1 IO流概述
-
- 10.1.1 InputStream 字节输入流
- 10.1.2 OutputStream 字节输出流
- 10.1.3 Reader 字符输入流
- 10.1.4 Writer 字符输出流
- 10.2 文件流
-
- 10.2.1 FileInputStream(文件字节输入流)
- 10.2.2 FileOutputStream(文件字节输出流)
- 10.2.3 FileReader(文件字符输入流)
- 10.2.3 FileReader(文件字符输入流)
- 10.3 缓冲流
-
- 10.3.1 字节缓冲流
- 10.3.2 字符缓冲流
- 10.4 转换流
-
- 10.4.1 InputStreamReader
- 10.4.2 OutputStreamWriter
- 10.5 打印流
-
- 10.5.1 完成屏幕打印的重定向
- 10.5.2 接受屏幕输入
- 10.6 对象流
-
- 10.6.1 序列化
- 10.6.2 反序列化
- 10.6.3 serialVersionUID
- 10.7 File 类
-
- 10.7.1 File 类常用方法
- 第十一章 多线程
-
- 11.1 多线程的基本概念
-
- 11.1.1 进程简介
- 11.1.2 线程简介
- 11.1.3 并行与并发
- 11.1.4 java程序的执行流程
- 11.2 线程的生命周期
- 11.3 两种线程实现方式
-
- 11.3.1 继承 Thread 类
- 11.3.2 实现 Runnable 接口
- 11.3.3 两种方式比较
- 11.4 线程调度与控制
-
- 11.4.1 线程的优先级
- 11.4.2 Thread.sleep 线程睡眠
-
- sleep与wait区别
- 11.4.3 Thread.yield 线程让步
- 11.4.4 Thread.join 线程插入
- 11.4.5 Thread.interrupt 线程中断
- 11.4.6 推荐的停止线程方式
- 11.5 Thread类常用方法
- 11.6 线程锁
-
- 11.6.1 乐观锁
- 11.6.2 悲观锁
- 11.6.3 自旋锁
- 11.6.4 Synchronized 同步锁
- 11.7 守护线程
- 第十二章 反射
-
- 12.1 反射的基本概念
- 12.2 反射的使用
-
- 12.2.1 反射使用场合
- 12.2.2 反射API
- 12.2.3 使用步骤
- 12.2.4 获取class对象的3种方法
- 12.2.5 创建对象的两种方法
- 12.3 反射的缺点
- 第十三章 注解
第一章 初识Java
1.1 java发展史
? 1990 年末,Sun 公司准备为下一代智能家电(电视机,微波炉,电话)编写一个通用的控制系统。该团队最初考虑使用C++语言,很多成员包括Sun 公司的首席科学家Bill Joy,发现C++语言在某些方面复杂,系统资源极其有限,缺少垃圾回收系统等,于是Bill Joy 决定开发一种新的语言:Oak。
? 1992 年夏天,Green 计划已经完成新平台的部分功能,包括Green 操作系统,Oak 的程序设计语言、类库等。同年11 月,Green 计划被转成“FirstPerson 有限公司”,一个Sun 公司的全资子公司。该团队致力于创建一种高度互动的设备。
? 1994 年夏天,互联 和浏览器的出现不仅给广大互联 的用户带来了福音,也给Oak 语言带来了新的生机。James Gosling(Java 之父)立即意识到,这是一个机会,于是对Oak 进行了小规模的改造。
? 1994 年秋,小组中的Naughton 和Jonathan payne 完成了第一个Java 语言的 页浏览器:WebRunner。Sun 公司实验室主任Bert Sutherland 和技术总监Eric Schmidt 观看了该 页的演示并给予了高度的评价。当时Oak 这个商标已经被注册了,于是将Oak 改名为Java。
? 1995 年初,Sun 公司发布Java 语言,Sun 公司直接把Java 放到互联 上,免费给大家使用,甚至连源代码也不保密,也放在互联 公开。几个月后,Java 成了互联 上最热门的宝贝。各种各样的小程序层出不穷,Java 终于扬眉吐气,成为了一种广为人知的编程语言。
? 1996 年底,Flash 问世了,这是一种更加简单的动画设计软件:使用Flash 几乎无须任何编程语言知识,就可以做出丰富多彩的动画。Flash 逐渐蚕食了Java 在 页上的应用。
? 1997 年2 月18 日,Sun 公司发布了JDK1.1,增加了即时编译器JIT。
? 1995 年Java 诞生到1998 年底,Java 语言虽然成为了互联 上广泛使用的编程语言,但它没有找到一个准确的定位。
? 1998 年12 月,Sun 发布了Java 历史上最重要的JDK 版本:JDK1.2。并将Java 分成了J2EE(提供了企业应用开发相关的完整解决方案)、J2SE(整个Java 技术的核心和基础)、J2ME(主要用于控制移动设备和信息家电等有限存储的设备)三个版本。
? 2002 年2 月,Sun 发布了JDK 历史上最为成熟的版本,JDK1.4。
? 2004 年10 月,Sun 发布了万众期待的JDK1.5。JDK1.5 增加了诸如泛型、增强的for 语句、可变数量的形参、注释、自动拆箱和装箱等。
? 2005 年,Java 诞生十周年,J2SE/J2EE/J2ME 分别改名为:JavaSE/JavaEE/JavaME。2006 年12 月,Sun 发布了JDK1.6。
? 2009 年4 月20 日,Oracle 甲骨文公司宣布将以每股9.5 美元的价格收购Sun。Oracle 通过收购Sun 获得了两项资产:Java 和Solaris。
? 2007 年11 月,Google 宣布推出一款基于Linux 平台的开源手机操作系统:Android。Android使用Java 语言来开发应用程序。Android 平台的流行,让Java 语言获得了在客户端程序上大展拳脚的机会。
? 2011 年7 月28 日,Oracle 发布了Java SE7,这次版本升级耗时将近5 年时间。引入二进制整数、支持字符串的switch 语句等。
? 2014 年3 月18 日,Oracle 发布了Java SE 8。2017 年7 月,Oracle 发布了JavaSE 9。
? 2018 年3 月20 日,Oracle 发布了正式版JavaSE 10。同一年9 月25 日发布了Java11。
? 2019 年3 月19 日,Oracle 发布了Java12。
? 2019 年 9 月,Oracle 发布了Java SE 13
? 2020 年 3 月,Oracle 发布了Java SE 14
1.2 特点
Java分别为三部分:JavaSE、JavaEE、JavaME。三者关系如下图:
Java程序在计算机的结构:
JDK、JRE、JVM 之间存在这样的包含关系:JDK 包含JRE,JRE又包含JVM。换句话说,只要安装了JDK,JRE 和JVM 则自动就安装了。
1.5 Java加载与执行
十进制转为二进制:
2.3.3 数据类型注意事项
整数型:
- java中整数会自动视为为int型,数值超过-2147483678~2147483647,后面要加L
- 大容量数据类型赋值给小容量前,要强制类型转换,否则会损失精度编译 错
- long a = 100L;
- int b = (int)a;
- byte型和short型在取值范围内,字面量可以直接赋值不用强制转换
- 多种数据类型混合运算时,结果取最大容量的数据类型
浮点型:
- 任意一个浮点型数据都比整数型容量空间大 float容量 > long容量
- 任意一个浮点型数据都被默认当成double型数据处理
布尔型:
- java中boolean类型只能有两个值,只能赋值为true和false(和C、C++不同)
2.3.4 字符编码
常见的字符编码有:
ASCII(’a’是97,’A’是65,’0’是48)
ISO-8859-1
GB2312
GBK
GB18030
Big5
unicode(utf8 utf16 utf32)
Java中大部分团队使用的编码为utf-8
2.3.5 转义字符
常用转义字符:
制表符:
换行符:
输出符 :
转义unicode码:
2.4 运算符
2.4.1 算数运算符
? 加减乘除:
? 取余:
? 自加1自减1:
2.4.2 关系运算符
? 大于:
? 大于或等于:
? 小于:
? 小于或等于:
? 等于:
? 不等于:
规则:所有关系运算符的运算结果都是布尔类型,不是true就是false;“==”和“=”注意区分,一个是判断,一个是赋值
2.4.3 逻辑运算符
? 且:
? 或:
? 非:
? 短路与:
? 短路或:
规则:逻辑运算符两边必须是布尔类型
短路:当使用短路&&时,左边表达式为false时,右边表达式不执行;短路或||同理

2.4.4 赋值运算符
?
规则:使用扩展赋值运算符不会改变运算结果类型,但是超数值范围用+=会损失精度
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!