基础
常量
用于标记状态,数据记录:
如项目中的主要阈值
字符常量和字符串常量
字符常量里面只有一个字符 如'A'
字符串用于数据信息的传递(字符串底层不可变)
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
private final char value[];
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
}
字符编码集: GBK UTF-8 ASCII 编码
转义字符需要注意:
\' 单引号 \" 双引号 \n 换行 \t 对齐
变量
命名规范可阅读<阿里巴巴JAVA开发手册>
基本数据类型
boolean | 1bit \ 其他 |
byte | 1字节 |
short \ char | 2字节 |
int \ float(F) | 4字节 |
long(L) \ double | 8字节 |
引用数据类型
运算符
1 | () [] . | 从左到右 |
2 | ! +(正) -(负) ~ ++ -- | 从右向左 |
3 | * / % + - | 从左到右 |
4 | << >> >>> | 从左到右 |
5 | < <= > >= instanceof | 从左到右 |
6 | == != | 从左到右 |
7 | & | 从左到右 |
8 | ^ | 从左到右 |
9 | | | 从左到右 |
10 | && | 从左到右 |
11 | || | 从左到右 |
12 | ? : (三目运算符) | 从右向左 |
13 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |
短路&& 短路||
分支循环
if( 条件1 ) {
分支1;
}else if( 条件2 ) {
分支2;
}else {
分支3;
}
switch( 表达式 ):{ //表达式只能为int char String 枚举
case 分支1:
break;
case 分支2:
break;
default:
break;
}
while(循环条件){ //适用循环次数不确定
循环体;
}
do{
循环体;
}while(循环条件);
for( 1初始化; 2循环条件; 4循环条件修改){
3循环体;
}
数组
数据类型[] 数组名 = new 数据类型[容量 Capacity];
静态分配空间, 不可扩容
下表从0开始
方法(函数)
修饰符 返回值类型 方法名(形式参数列表) {
方法体;
}
方法重载 和 方法重写
面向对象
区别于面向过程
引用数据类型
类和对象
对象是类的实例
public class Person{
//成员变量
private int id;
private String name;
//getter 和 setter
//构造器
//成员方法
public void eat() {
System.out.println();
}
}
对象实例化
类名 类对象 = new 类名();
Person person = new Person();
person.eat();
person.setId(1);
封装
getter和setter方法
将成员变量都用private修饰
成员变量和局部变量的区别
成员变量 | 局部变量 | |
堆 | 栈 | 内存 |
当前对象的状态 | 临时使用 | 作用 |
零值 | 不赋值不能进行非赋值运算 | |
GC销毁 | 方法定义内 | 生存周期 |
继承
public class A extents B{
}
this 和 super的区别
this表示当前对象
super表示父类对象
方法重写Override
final
final 修饰成员变量: 可以认为是带有名称的常量
final 修饰成员方法: 不能被子类重写
final 修饰类: 无继承类
final修饰局部变量: 需要赋值,不可变, 延长生存周期
abstravact
abstract 修饰的方法没有方法体
abstract修饰的类表示抽象类
继承abstract类需要实现abstract修饰的方法
多态
编译看左,运行看右
编译看左:Java 编译代码过程中,以左侧的大类型为主,右侧数据只是子类
运行看右: 运行过程中会根据右侧的真实类型,来执行目标方法,提供目标数据
父类的引用指向子类对象 \ 接口的引用指向实现类对象
拓宽方法的参数支持范围 \ 拓宽方法的返回值类型范围
接口
接口之间继承为多继承
类同时实现多接口
多继承时左优先原则
public static final 和 public abstract 修饰
泛型
<T> Type 类型
<E> Element 元素
<K> Key 键
<V> Value 值
<R> Return 返回值
extend 和 super在泛型中的使用
? extend A A的子类及A
? super B B的父类及B
static
静态变量
称为类变量、静态变量
Java 虚拟机只为静态变量分配一次内存,加载类过程中完成静态变量的内存分配
修改后所有都修改, 推荐使用类名调用
静态成员变量晚于类对象销毁
静态方法
推荐类调用
静态成员方法在类文件加载阶段申请内存【方法区】,并且已具备执行能力。所有和执行相关的内容全部准备就绪
可以直接访问所属类的静态变量和静态方法
不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法
super 关键字也与类的实例相关,静态方法中不能使用 super 关键字
静态代码块
类文件加载过程中,一定执行,有且只执行一次
不可以使用类内的非静态资源
可以使用类内其他静态资源
一般用于项目启动过程中,资源加载,配置文件读取。相关程序启动
final
局部变量
一旦赋值无法改变
引用数据类型
指向地址不可变, 指向地址的内容可变, 如数组arr, arr[i]可以修改
成员变量
定义时必须初始化, 一旦赋值无法修改
成员方法
不能被重写
类
无子类, 不能被继承