Java 基础知识梳理

Java 基础内容

  • 数据类型
  • 运算符
  • 流程控制
  • 面向对象
  • 重要关键字
  • 异常
  • 编码
  • Object类

数据类型

计算机中最小的单位是bit,一个位0/1表示

基础数据类型
  • byte 1字节

  • short 2字节

  • int 4字节

  • long 8字节

  • float 4字节

  • double 8字节

  • boolean 1字节

  • char 2字节 可以为unicode编码,位于栈

    1
    char a = '\u1233';//unicode编码表达

引用数据类型:引用位于栈,引用的对象位于堆

高精度向低精度可能丢失,表达式中默认转换为当前表达式的最大精度进行计算

运算符
  • 基础运算符
  • instanceof 用于判断对象是否是某类型

流程控制

  • if else

  • if elseif

  • while

  • do while

  • for

  • foreach 需要容器实现Iterable接口和Iterator接口

    1
    2
    3
    for(SomeType obj: objList) {
    //
    }

面向对象

继承

关键字extends,类的继承和接口的继承

封装

访问控制private,default,protected,public

多态

通过父类或者接口引用访问实际对象的方法,称为动态绑定,实在运行时才能决定的。

重载

静态绑定,即同名方法存在不同的参数列表(类型,数量)

接口

成员和方法修饰为public ,实现的类需要实现方法,与接口间可以继承。只有声明,但是新版jdk可以存在默认方法,使用default定义

内部类

匿名内部类,默认持有外部类this引用

1
2
3
4
5
6
7
8
9
10
11
12
//只是将匿名内部类复制给了一个引用,其实再参数传递中的内部类,同样也是将匿名内部类对象传递给了,临时的引用。
//方法实现
class A{
B b = new B(){
void b(){
//
}
}
}
interface B{
void b();
}

成员内部类,默认持有外部类this引用

1
2
3
4
5
6
7
8
9
10
class A{
class B{

}

public void main(){
A a = new A();
B b = a.new B();
}
}

静态内部类,不会持有外部引用

1
2
3
4
5
6
7
8
Class A{
static B{

}
public void mian() {
B b = new A.B();
}
}

内部类可以和成员一样访问外部类的成员。

匿名内部类对象在访问方法参数,参数需要定义为final,因为在方法中一旦一开,参数的生命周期也就结束了,但是匿名内部类对象还引用着,通过使用final来拷贝一份使用,间接的延长了生命周期,也就可以正常访问了。

引用类型
  • 强引用 只要持有强引用,JVM宁可抛出内存泄漏也不愿意去回收
  • 软引用 在没有强引用的情况下且内存不足情况下会去回收对象
  • 弱引用 在没有强引用的情况下回去回收对象
  • 虚引用 形同虚设,常用于jvm内部跟踪垃圾回收过程,回送一个消息通知