Java基础注意点
float类型的特点:
有限,离散,舍入误差,大约,接近但不等于
结果!!
------------------------------------------------------------------
结果!!
类型转换
类型优先级由低到高:
byte,short,char -> int ->long -> float ->double
强制类型转换 由高到低
自动类型转换 由低到高
转换时可能会出现内存溢出或精度问题
基本运算符
进行算数运算时,默认结果为类型优先级高的
运算符的优先级
优先级 | 运算符 | 结合性 |
1 | ( ) [ ] . | 从左到右 |
2 | ! ~ ++ -- | 从右到左 |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | << >> >>> | 从左到右 |
6 | < <= > >= instanceof | 从左到右 |
7 | == != | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ? : | 从左到右 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右到左 |
15 | , | 从右到左 |
当多个运算符出现在一个表达式中,谁的优先级别高,就先执行谁。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果完全不一样。
有一个口诀可以帮助记忆:
单算移关与,异或逻条赋
括号级别最高,逗号级别最低
由高到低:单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。
多态
注意事项:
- 多态是方法的多态,属性没有多态
- 父类和子类必须有联系
- 存在条件:继承关系,方法名需要重写,父类引用指向子类对象, Father f1 = new Son();
不能被重写的方法
- static 方法,属于类,它不属于实例
- final 常量
- private方法
static(静态)
标注的方法在类加载是就会执行
其他类可直接使用类名.方法名调用静态方法,无需使用对象
执行顺序
结果!!!
执行顺序:
静态代码块 - > 匿名代码块 ->无参构造器 (注意:静态代码块仅在类加载时执行一次,以后不再执行)
抽象类
- 不能new这个抽象类,只能靠子类去实现他,约束!
- 抽象类中可以写普通方法
- 抽象方法必须在抽象类中
抽象类不能去new创建但是也会默认有无参构造器
接口
普通类:只有具体实现
抽象类: 具体实现和规范(抽象方法)都有
接口:只有规范!自己无法写方法~专业的约束!约束与实现分离,面向接口编程