String 、StringBuffer、StringBuilder

JVM、JRE、JDK

JVM(Java Virtual Machine)是一个虚拟机、用于执行byte code字节码。
源文件(通过编译)——>字节码文件——>JVM——>OS
JRE(Java Runtime Enviroment)包含JVM、Java类库、Java命令和其他一些基础构件,但是它不能用于创建新程序。
JDK(Java Development Kit)包含JRE、以及编译期(java成功编译没错后生成.class文件)和工具(Javadoc和jdb)等用于程序开发的文件。

==和equqls()的区别

:基本数据类型(比较的是值)
引用数据类型比较的是内存地址
equals():比较两个对象是否相等分两种情况

  1. 类没有覆盖equals()方法,通过equals()比较两个对象时,等价于“==”比较两个对象
  2. 类覆盖了equals()方法,比较两个对象的内容是否相等,如它们的内容相等,则返回true,即这两个对象相等。
String 、StringBuffer、StringBuilder

相同点:
1.都可以存储和操作字符串。
2.继承:都是final类,都不允许被继承。
3.API相似。
不同点
1.可变:String使用final关键字修饰字符数组来保存字符串 private final char[] value,所以String对象是不可变的,Java9之后,String类的实现改用byte数组存储字符串 private final byte[] value,而StringBuffer和StringBuilder继承自AbstractStringBuilder,在AbstractStringBuilder也是使用字符数组保存字符串的 char[]value ,但是没有用final关键字修饰,所以这两个对象都是可变的。
2.线程安全:String对象是不可变的,也就可以理解为常量,所以线程安全。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁(方法前加了synchronized关键字)所以是线程安全的。StringBuilder并没有对方法加同步锁所以非线程安全。
3.性能:每次对String类型进行改变的时候,都会生成一个新的String对象,StringBuffer 和 StringBuilder 的字符串对象可以对字符串内容进行修改,在修改后的内存地址不会发生改变。方法体内没有对字符串的并发操作,且存在大量字符串拼接操作,建议使用 StringBuilder,效率较高。

Exception和Error的区别:

1.Exception和Error的父类都是Throwable类。
2.Error类一般是指和虚拟机相关的问题,如系统奔溃、虚拟机错误、内存空间不足、方法调用栈溢出等。对于这类错误导致应用程序的中断,仅靠程序本身无法恢复和预防,遇到这样的错误建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能的处理异常,使程序恢复运行,而不应该随意终止异常。

接口和抽象类的区别:

1.接口不能有构造方法,抽象类可以有构造方法。
2.接口用interface修饰,抽象类用abstract修饰。
3.接口不能实例化,抽象类不能实例化,即不能用new关键字实例化对象。
4.一个类可以实现多个接口,但是只能继承一个类,接口用implemenst实现,类用extends继承。
5.抽象类中可以有普通成员方法,接口中没有普通成员方法。
6.接口方法默认是public修饰,均为抽象方法,不能有具体的方法实现,没有方法体默认的就是抽象方法;抽象类默认由public、proteced、default修饰,含有抽象方法(用abstract关键字修饰的方法)的类是抽象类,必须使用abstract修饰。
7.抽象类中可以包含非抽象普通方法;JDK1.8以前接口中的方法默认都是抽象的,JDK1.8开始方法可以有default实现和static方法。
8.抽象类中可以包含静态方法;JDK1.8前接口不能包含静态方法,JDK1.8及以后可以包含已实现的静态方法。
9.接口和抽象类中都可以包含静态成员变量,抽象类中的静态成员变量可以是任意访问权限,接口中的静态成员变量默认且只能是public final static类型。
10.接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。
11.从设计层上来讲,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为规范。

重载和重写的区别:

重载条件:
发生在同一个类中,方法名必须相同、参数类型或参数个数或参数顺序不同、方法返回值和访问权限可以不同。
重写条件:
重写发生在子类继承父类
返回值类型、方法名、参数列表必须相同;抛出的异常范围小于等于父类;访问修饰符大于等于父类
构造方法无法被重写
声明为final的方法不能被重写
声明为static的方法不能被重写
声明为private的方法不能重写

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值