一.JDK,JRE,JVM三者的联系
- JDK
开发工具箱,包含JRE - JRE
Java程序运行的环境依赖都在jre中 - JVM
负责把Java程序(.class文件)编译成机器语言,并且进行垃圾回收等操作,是java程序可以跨平台运行的原因。
二.Java面向对象编程的三大特性
-
封装性
把一个对象的属性私有化,把想提供给外界的属性以方法的形式暴露出来。 -
继承
(1)子类只能由一个父类(但是所有类都默认继承Object类)
(2)子类拥有父类非私有方法
(3)子类可以用super关键字调用父类成员或者方法
(4)子类不继承父类构造方法,可以使用super(参数列表)调用哪个构造方法
(5)子类如果有多个构造方法,那么子类就不提供默认的无参构造,如果没有在有参构造方法中用super()调用父类构造方法,那么子类要创建一个无参构造方法,因为无参的构造方法默认提供super()方法。 -
多态
程序中定义的引用变量要在运行时才知道到底指向哪个类。比如说多个类实现一个接口,在创建一个实例对象时,用这个接口作为上转型对象,可以用来指向多个实现它的类。
三.String,StringBuffer和StringBuilder讲解
-
String
使用private final char[] value保存字符串(重要)
所以String的值不可改变(因为用final修饰了),实际上我们用调用String的方法对String进行改变时,是重新生成了一个String对象,再把原引用指向它。 -
StringBuffer
使用char[] value保存数组,所以可以在原数组上改变值。
StringBuffer用对方法使用了同步锁,所以它是线程安全的。 -
StringBuilder
使用char[] value保存数组。
和StringBuffer不同的是,它的方法没有添加同步锁,线程不安全,但是对它进行操作的速度比StringBuffer更快。