基本类型
名称 | 内存 | 取值范围 |
---|---|---|
byte | 1 | -128~127,-27 ~ 27-1 |
short | 3 | -32768~32767 -215 ~ 215-1 |
int | 4 | -231 ~ 231-1 |
long | 8 | |
float | 4 | |
double | 8 | |
char | 2 | |
boolean | 1 | true/false |
switch
long不可以,enums可以,String可以(内部比较hashcode+equals来比较值)
static
- 域变量与方法,可以在不创建对象的情况下调用,分配到堆内存上的方法区内,上面还有一些类的相关信息
- 当前类被初次加载时,会将static块按顺序执行,并且只执行一次
- 也就是或static修饰的是优先于对象的存在,只要类被加载,static修饰的就已经被确定下来
三大特性
- 继承
- 封装
- 多态:
方法重载:主要是由方法的入参的来区别不同函数,JVM对应静态分派
方法重写:与具体的实例对象有关,JVM对应动态分派,由操作数栈顶的对象依次寻找对应的方法
面向对象的五大原则
名称 | 作用 |
---|---|
单一职责 | 作用要单一具体有针对性 |
开放关闭原则 | 扩展开放,修改封闭 |
里氏替换 | 子类能完全替换父类出现的地方 |
依赖倒置 | 实现要依赖于抽象,低层次依赖于高层次 |
接口分离 | 功能拆分细化到不同接口 |
equals与hashcode
两个对象相等,hashcode一定相等
hashcode相等两个对象不一定相等,还要equal来判断是不是真的内容也相等
所以要同时覆盖equals和hashcode,补充些hashcode,两个对象怎么都不会相等
值传递
java中只有值传递
基本类型传递值的拷贝
引用类型传递的是实际内存地址值的拷贝
三种获得class对象的方法
- new XXX;XX.getClass();
- Class.forName(com.cht.XXX);
- XXX.class;
IO流
Object中内置的方法
- hashcode
- equals
- wait
- notify
- notifyAll
- sleep
- clone
- finalize