简介:
Java是常用的开发语言之一,是从事相关开发工作的基础。本文将不考虑未来工作方向的影响因素来向读者展示Java的学习/复习路线。
(好吧,实际上是我为了方便复习整理的提纲,可帮助在校生快速复习。分为上下两篇文章,因为今天我没写完。)
一、常识概念
1.Java语言版本
- JavaSE:Java语言标准版,用于桌面应用开发。
- JavaME:主要用于嵌入式,目前几乎无人使用。
- JavaEE:Java语言企业版,用于Web方向开发。
2.JVM、JRE、JDK
- JVM:Java虚拟机。
- JRE:Java运行环境,包涵JVM以及JavaAPI。
- JDK:Java开发工具,包含了JRE和开发工具。
3.Java语言是可以跨平台的
- Java程序通过Java编译器将Java源程序编译为字节码文件。JVM可以将字节码文件执行。所以并不依赖于使用的环境是什么样的操作系统,而是依赖于JVM,所以安装JVM就可以实现跨平台。
4.关键字、常量、变量、标识符
- 关键字:Java语言中具有特殊含义的单词。关键字字母都是小写的,编译器会高亮显示。
- 常量:运行过程中值不可以发生改变的量。如:字符串常量、整数常量、小数常量、字符常量、布尔常量、null。
- 变量:运行过程中值可以发生改变的量。需要自己进行定义,定义时对于数据类型需要限制,因为Java是强类型语言。
- 标识符:用于给变量、常量、方法、类命名。组成:数字、字母、下划线、美元符号。第一个字符不可以是数字。标识符不能是关键字。类名使用大驼峰命名法,每个单词首字母都大写;变量名、方法名使用小驼峰命名法,从第二个单词开始每个单词首字母大写。
5.Java中数据类型
- byte :整数类型,占用1byte。
- short:整数类型,占用2byte。
- int(默认类型):整数类型,占用4byte。
- long:整数类型,占用8byte。
- float:浮点类型,占用4byte。
- double(默认类型):浮点类型,占用8byte。
- char:字符类型,占用2byte。
- boolean:布尔类型,占用1byte。
6.计算机存储单元
- 位:计算机存储设备最小的单元。b
- 字节:计算机中最基本的存储单元。byte
- 1B=8bit、1KB=1024B、1MB=1024KB、1GB=1024MB、1TB=1024GB…
7.类型转换
- 自动类型转换:把一个数据范围小的数值或者变量,赋值给数据范围大的变量。
- 强制类型转换:把一个数据范围大的数值或者变量,赋值给数据范围小的变量。
常量优化机制:编译时,整数常量计算会直接计算出结果,并会判断结果是否在该类型范围以内,不在就报错。
byte a=15;
byte b=15;
byte c=a+b;
int num=a+b;
8.逻辑运算符、短路逻辑运算符
- &:逻辑与,a和b都是true,结果为true。
- |:逻辑或,a和b都是false,结果为false
- &&:短路与,作用和&相同,有短路效果。
- ||:短路或,作用和|相同,有短路效果。
- 短路效果:&&中只要有一个表达式值为false,结果就是false,不用全部计算。|| 道理相同。
9.流程控制语句
- if 、else if、else:略
- while、do while、for:略
- switch语句:执行过程中对表达式进行判断,执行相应语句,遇到break结束。(小心switch穿透问题:解决方案,别忘写break;)
switch(表达式){
case 1:
语句体;
break;
case 2:
语句体;
break;
...
default:
语句体;
break;
}
10.数组的动态初始化、静态初始化
- 数组动态初始化没啥神奇的,听着好厉害,就是只给定数组长度,系统默认初始化。
- 数组静态初始化:创建数组时,直接确定元素。
11.方法重载
- 概念:一个类中有多个方法的方法名相同,但这些方法的参数不相同(类型,数量。与方法的返回值无关)。
二、初级入门
1.面向对象、面向过程
- 面向对象:以对象为中心的思想。
- 面向过程:以过程为中心的思想。
2.类的组成
3.成员变量、局部变量
- 成员变量在类中的方法外,局部变量在类中的方法内或者方法声明中。
- 成员变量在堆内存,局部变量在栈内存。
- 成员变量的生命周期随着对象的消失而消失,局部变量随着方法的调用结束消失。
- 成员变量有默认初始化值,局部变量没有默认初始化值。
4.面向对象的四大特性
- 抽象:将一类事物的共同特征抽取出来。
- 继承:从已有类创建新类的过程。
- 封装:将类中的数据进行屏蔽,在外只保留操作数据的方法。
- 多态:不同子类对于同一消息做出的不同反应。
5.String、StringBuilder、StringBuffer
- String不可变字符串。
- StringBuilder可变字符串,线程不安全。
- StringBffer可变字符串,线程安全。
- 后两个除了线程安全问题外功能完全相同。
6.static
- 可以修饰成员方法,成员变量。
- 被static修饰,被类的所有对象共享。
- 随着类的加载而加载,优先于对象存在。
- 可以通过类进行调用。
- 静态方法只能访问静态的成员。
- 非静态方法可以访问静态的成员,也可以访问非静态的成员。
- 静态方法中没有this关键字。
7.final
- final可以修饰类、成员变量、成员方法。
- final修饰类,该类不能被继承。
- final修饰方法,该方法不能被重写
- final修饰变量,该变量是一个常量 ,不可再赋值。
8.this、super
- this:代表本类对象的引用。
- super:代表父类对象的引用。
9.继承中构造方法访问特点
- 子类初始化之前一定要先将父类数据初始化,每一个子类构造方法的第一条语句默认都是super();
10.方法重写
- 在继承的场景中出现,子类的方法和父类的方法相同。
- 私有方法不能被重写。
- 子类方法访问权限不能更低。
- 静态方法无法重写。
11.抽象类
- 抽象类和抽象方法使用abstract修饰。
- 如果一个类是抽象类,他不一定有抽象方法。
- 如果一个类有抽象方法,他一定是抽象类。
- 抽象类不能被实例化。
- 抽象类可以有构造方法。
- 抽象类的子类要么也是抽象类,要么将所有抽象方法重写。
12.接口
- 接口是一种公共的规范。
- 它的作用是定义规范和功能拓展。
- 使用关键字interface修饰。
- 接口不能被实例化。
- 接口的子类要么是抽象类,要么将所有抽象方法重写。
- 接口没有构造方法。
- 类只能单继承,接口不一定。
13.Lambda表达式
- 使用的函数式编程思想。
- (形式参数)->{代码块}
- 使用前提:有一个接口,接口中有且只有一个抽象方法。
- Lambda表达式有省略模式:参数类型可以省略,要省略全省略。如果参数仅有一个,小括号可以省略。如果代码块语句只有一条,可以省略大括号分好return。
如有内容出错请在留言区留言,及时更正。
|