String | StringBuffer | StringBuilder | |
---|---|---|---|
可变性 | 不可变 | 继承自AbstractStringBuilder类 | 继承自AbstractStringBuilder类 |
线性安全性 | 对象不可变,线性安全 | 加了同步锁或对调用的方法加了同步锁,线程安全 | 非线性安全 |
性能 | 每次改变都会生成一个新的String对象 | 对StringBuffer对象本身进行操作 | 可以获得10%~15%左右的性能提升 |
总结 | 操作少量数据 | 多线程 | 单线程 |
由于静态方法可以不通过对象进行调用,因此在静态方法里不能调用其他非静态变量,也不可以访问非静态变量成员。
5. 在JAVA中定义一个不做事且没有参数的构造方法的作用如果Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类的没有参数的构造方法。如果没有这个方法,则会在编译时发生错误。
6. import java和javax的区别最开始javax是扩展的JavaAPI,随着时间的推移,现在javax已经成为标准API的一部分。
java和javax没有本质的区别。
接口 | 抽象类 | |
---|---|---|
方法 | 默认public | 可以有非抽象方法 |
变量 | 只有static和final变量 | 可以有其他变量 |
一个类 | 可以实现多个接口,接口本身可以通过extends关键字扩展多个接口 | 只能实现一个抽象类 |
修饰符 | 默认public | public、protected、default修饰符 |
设计层面 | 对行为的抽象,是一种行为的规范 | 抽象是对类的抽象,是一种模板设计 |
成员变量 | 局部变量 | |
---|---|---|
语法 | 1. 属于类;2. 可以被修饰符所修饰;3. 两者均能被final修饰 | 1. 在方法中定义的变量或者是方法的参数; 2. 不能被访问控制修饰符以及static所修饰 |
存储方式 | 1. 如果使用static修饰,属于类; 2. 没有使用static,属于实例 | 对象存在于堆内存,局部变量也存在于堆内存 |
生存时间 | 随着对象创建而存在 | 随着方法的调用自动消失 |
没有赋初值 | 自动以类型的默认值赋值(final除外) | 不会自动赋值 |
使用new运算符创建对象实例(对象实例在堆内存中)。
20. 对象实体和对象引用的不同?对象引用指向对象实例,可以指向0或1个对象。
一个对象可以有n个引用指向它。
方法的返回值是指获取到某个方法体中的代码执行后产生的后果。
作用:接收结果,使其可以进行其他的操作。