java 基础知识回顾

Java三大特性

继承封装多态

基础数据类型

  1. 包装类的自动拆箱,自动装箱

  2. String类型
    String拼接

    String str = “a” + “b”;
    String str2 = str + “a”;
    表达式中只有常量,在编译期间就会完成拼接计算。
    表达式存在变量,等到运行期才会计算。
    注意指向地址问题.

    String.intern()
    在jdk1.6中,程序会从常量池中返回或者创建
    在jdk.1.7中,程序会从常量池中返回,没有就去堆中查询和创建。(new 出来的都在堆里面)

    String.equals()
    判断的是地址用==
    然后比内容。

  3. StringBuffer 和 StringBuild
    两者最底层都继承自可变字符数组
    > char[] value
    >初始化容量为16,扩容方式为: length2+2
    >如果length
    2+2大于等于int.MAX_VALUE,就取int.MAX_VALUE,否则就抛出异常了。OutOfMemoryError();

  4. String的不可变性
    即对String进行赋值或者修改的话,实现是直接修改指针,指向新值就行了。、
    原因:
    底层实现为数组,被final修饰,不可继承,private私有。

    private final char value[];

final关键字

  1. 修饰类,方法,引用
  2. 修饰类,该类不能被继承。并且这个类的对象在堆中分配内存后地址不可变。
    修饰方法,方法不能被子类重写。
    修饰引用,引用无法改变,对于基本类型,无法修改值,对于引用,虽然不能修改地址> > 值,但是可以对指向对象的内部进行修改。

抽象类和接口

1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。

2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。

3 另外,一个类可以实现多个接口,但是不能继承多个类。
然而接口却可以继承多个其他接口。这一点很神奇。

代码和代码块加载顺序

局部代码块
主要作用是限定变量生命周期,达到GC标准来做内存管理。
方法内部。
构造代码块
构造代码块先于构造方法执行,每次创建对象时都会执行一次。
用于对象初始化。
类内部。
静态代码块
静态代码块只执行一次,所以对象共用。用于初始信息配置。

内部类

待续…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章