目录
0x00 前言
温故而知新,自身遗忘点或易错点回顾总结。
0x01 内容理解
Java的特点
- 面向对象:
- 两个要素:类、对象。
- 三个特征:封装、继承、多态。
- 健壮性:
- 去除C语言中的指针
- 自动的垃圾回收机制—>仍会出现内存泄漏、溢出
- 跨平台性:write once, run anywhere:一次编译,到处运行。归功于JVM。
Java核心机制
- 垃圾回收机制:程序运行过程自动进行,但仍会导致内存泄漏和溢出。
- Java虚拟机(JVM):提供了Java跨平台的可能性。
Java环境
- JDK:java开发工具包(含编译工具 javac.exe 、打包工具 jar.exe ),含JRE和开发工具集。
- JRE:Java运行环境,含 JVM 和 Java SE 核心类库。
- JVM:Java虚拟机。
Java的注释
- 分类:
- 单行注释(//注释):
- 多行注释(/*注释*/)
- 文档注释(/**注释*/):java特有
- 相关使用说明:
- 单行注释和多行注释,可对所写程序进行解释说明,增强程序可读性,以及方便调试所写代码。
- 单行注释和多行注释,其注释内容不参与编译,即字节码文件中不包含该信息。
- 文档注释,其注释内容可被JDK中的工具 Javadoc 所解析,进而生成一套以网页文件形式体现该程序的说明文档。
- 文档注释不可嵌套使用。
Java API 文档
- 习惯上:将语言提供的类库,都称为 api 。
- API 文档:针对于提供的类库如何使用,所给的一个说明书。
Java开发步骤
- 在 .java 文件(源文件)中编写Java代码。
- 使用 javac 命令( javac.exe )编译 .java 文件,进而生成一个或多个 0.class 文件(字节码文件)。
- 通过 java 命令( java.exe )运行 .class 文件,从而得到结果。
Java命名规范
- 包名:多单词组成时,所有字母都小写: xxxyyyzzz 。
- 类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz 。
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写: xxxYyyZzz 。
- 常量名:所有字母都大写。多个单词时每个单词用下划线连接: XXX_YYY_ZZZ 。
变量的类型
- 数据类型
- 基本数据类型
- 数值型
- 整型:byte(1)、short(2)、int(4)、long(8字节,声明时以 L/l 结尾)
- 浮点型:float(4字节,声明时末尾加 f/F ,7位有效数字)、double(8字节,默认使用,14位精度)
- 字符型:char(1个字符=2个字节,Unicode字符集)
- 布尔型:boolean(可取true,或false)
- 数值型
- 引用数据类型
- 类(class):字符串包含在其中。
- 接口(interface)
- 数组(array)
- 基本数据类型
基本数据类型之间的运算规则
- 前提:不包含 Boolean 类型
- 自动类型提升:
- 结论:小容量数据类型变量与大容量数据类型变量做运算时,结果自动提升为大容量数据类型。注:此处容量大小为类型的数值范围大小,如 float 容量比 long 的大。
- 特别的:byte、char、short的变量之间做运算时,结果为int型
- byte、char、short --> int --> long --> float --> double
- 强制类型提升
- 自动类型提升运算的逆运算。
- 注:可能导致精度损失。
位运算符相关
- 位运算符的操作数都是整型
- <<:在一定范围内,每向左移1位,相当于 * 2
- >>:在一定范围内,每向右移1位,相当于 / 2
- 异或运算符(^)交换两个数值,突破点:num1 ^ num1 = 0,0 ^ num1 = num1
二维数组定义
- 静态初始化
- int[][] arr =new int[][]{{1,2,3},{4,5,6,7,8}};
- int[][] arr = {{1,2,3},{4,5,6,7,8}};
- 动态初始化:内层数组长度未确定(必须指定其行数)
- int[][] arr = new int[2][]; arr[0] = new int[]{1,2,3,4}; arr[1] = new int[]{4,5,6,7,8,9};
- 默认初始化
- int[][] arr = new int[2][4]; //4为默认长度,而非上限,后续可扩长
随机值生成
- 注:[min,max]的公式 (int)(Math.random() * (max - min + 1) + 10)
算法的5大特征
- 输入:零个或多个有意义的输入。
- 输出:一个或多个输出。
- 有穷性:算法运行时间有限,可以结束。
- 确定性:算法的每一步都有确切含义。
- 可行性:算法的每一步都清楚且可行。
十大内部排序算法(数组)
- 选择排序:直接选择排序、堆排序。
- 交换排序:冒牌排序、快速排序。
- 插入排序:直接插入排序、折半插入排序、Shell排序。
- 归并排序
- 桶式排序
- 基数排序
0x03 总结
许多遗忘与不懂,再接再励。