Java语言特点
- 面向对象语言
- 跨平台
- 解释执行
- 健壮&安全的语言(代码加载有安全检查)
- 支持多线程
- 面向网络
- 动态性
Java运行环境(JRE)
- 类加载器 -> 加载代码
- 字节码校验器 -> 检验代码
- 解释器 -> 执行代码
JDK的设置
将JDK的路劲设置到系统环境变量中,以方便后续的java流程中的工具模块使用(Path)
java基础编译流程
- 使用编辑器创建并编辑*.java源代码文件
- 使用javac工具对代码文件进行编译 生成字节码(.class) =>
javac fileName.java
- 使用java工具执行程序 =>
java fileName
*同一个java源文件中有且仅有一个带public修饰符的类,且源文件名必须与public修饰符的类名一致
标识符
- 规则
以字符(包括汉子),下划线,$为开始
不能使用Java保留字作为标识符
大小写敏感
关键字
- 一些用于特殊用途的单词,称为关键字或者保留字,不能作为标识符使用
分隔符
- 圆点’.’ 访问对象成员
- 分号’;’ 语句结束符
- 空格’ ’ 缩进 或 字符
- 花括号 ‘{’ ‘}’ 代码块
注释
- 单行注释 //
- 多行注释 /**/
- 文档注释 /** */
数据类型
- 简单数据类型
类型 | 类型分类/说明 |
---|---|
byte | 整数类型 |
short | 整数类型 |
int | 整数类型 |
long | 整数类型 |
float | 浮点类型 |
double | 浮点类型 |
char | 字符类型 |
boolean | 布尔类型 |
*自动转换次序
byte -> short -> char -> int -> long -> float -> double
- 复杂类型(引用类型)
类型 | 类型分类/说明 |
---|---|
class | 类类型 |
interface | 接口 |
[] | 数组 |
enum | 枚举 |
变量
变量需要先声明,后使用
//声明格式
类型 变量名[=值][,变量名[=值]];
*同一个范围内不能有重名变量
运算符
- 算术运算符
运算符 | 类型 | 说明 |
---|---|---|
++ | 一元运算 | 自增运算 |
– | 一元运算 | 自减运算 |
- | 一元运算 | 反数 |
+ | 二元运算 | 加法运算 |
- | 二元运算 | 减法运算 |
* | 二元运算 | 乘法运算 |
/ | 二元运算 | 除法运算 |
% | 二元运算 | 取余运算(模运算) |
~ | 位运算 | 位求反 |
>> | 位运算 | 带符号右移 |
<< | 位运算 | 带符号左移 |
>>> | 位运算 | 无符号右移 |
& | 位运算 | 与运算 |
| | 位运算 | 或运算 |
^ | 为运算 | 异或运算 |
标准输入输出
-
print()
-
println()
-
printf()
-
(char)read()
-
new BufferedReader(InputStreamReader(System.in)) => readLine
-
new Scanner(System.in)
条件选择
- if
- switch
循环
- for
- while
- do while
循环控制
- continue
- break
类
//类定义格式
[修饰符] class 类名 [extends 父类名] [implements 接口列表]
{
//属性
修饰符 类型 属性名
//方法
修饰符 返回类型 方法名(参数列表){
//方法的具体实现
}
}
*属性中的类变量属于类成员,方法中的静态方法属于类成员
*属性中的实例变量属于对象成员,方法中的实例方法属于对象成员
变量作用域
- 成员变量
- 方法中的局部变量、参数
- 语句块中的局部变量
- 异常处理参数(局部变量)
*当存在不同作用域同名变量时,将采取就近原则确认实际使用的变量
包
- 采用分层结构
- 同一个保重不能有同名的类
- 默认系统会为每一个源文件创建一个无名包
使用package语句自定义包
//须将此行安置在源文件的第一行
package packageName;
多态
- 精确匹配优先于转换匹配
- 固定参数优先于可变长参数
多线程
- 继承Thread方法
- 实现Runnable接口
调度策略:抢占式调度
- 当前时间片用完
- 使用yield()或sleep()方法主动放弃
- 进行I/O访问,进入阻塞状态,或者等候wait()方法
- 有高优先级线程参与调度
以上4种情况,当前线程将放弃cpu占用
优先级
- Thread.MIN_PRIORITY = 1 最低优先级
- Thread.MAX_PRIORITY = 10 最高优先级
- Thread.NORM_PRIORITY = 5 默认优先级
泛型
- 泛型的类型参数只能是类类型
- 泛型的参数可以有多个
- 泛型的参数类型可以使用extends语句,进行类型范围限制
- 泛型的参数类型可以使用通配符
- 泛型的类型可以使用super