JavaSE

重载和重写的区别:

重载: 发生在同一个类中,两个方法的名称必须相同,参数的类型,个数,顺序都可以不同,访问的修饰符和返回值也可以不同.(发生在同一个类中,只要方法名称相同即可)
**重写:**发生在子父类或者接口跟实现类中,两个方法的名称跟参数列表也是必须相同.子类的返回值跟抛出的异常必须小于父类,访问的权限修饰符必须大于父类,如果父类使用private修饰的,子类就不能继承.(发生在两个类,除了方法的内部逻辑,其他都要相同)

String 和 StringBuffffer.StringBuilder 的区别是什么?String 为什么是不可变的?

String 中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder 是 StringBuilder 与 StringBuffffer 的公共父类,定义了一些字符串的基本操作,如 expandCapacity.append.insert.indexOf 等公共 方法。StringBuffffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对 方法进行加同步锁,所以是非线程安全的。

  1. 操作少量的数据 = String
  2. 单线程操作字符串缓冲区下操作大量数据 = StringBuilder
  3. 多线程操作字符串缓冲区下操作大量数据 = StringBuffffer

final关键字的主要作用:

final关键字主要用在三个地方:变量.方法.类。

  1. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
  2. 当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
  3. 使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。
    在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。

接口和抽象类的区别

参数抽象类接口
默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现
实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器抽象类可以有构造器接口不能有构造器
与正常Java类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别接口是完全不同的类型
访问修饰符抽象方法可以有public、protected和default这些修饰符接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法抽象方法可以有main方法并且我们可以运行它接口没有main方法,因此我们不能运行它。
多继承抽象方法可以继承一个类和实现多个接口接口只可以继承一个或多个其它接口
速度它比接口速度要快接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。果你往接口中添加方法,那么你必须改变实现该接口的类。

Java4种访问修饰符权限的区别

public

被public修饰的成员变量和方法可以在任何类中都能被访问到。
被public修饰的类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的文件名就必须要和这个被public所修饰的类的类名相同,否则编译不能通过。

protected

被protected修饰的成员会被位于同一package中的所有类访问到,也能被该类的所有子类继承下来。

friendly

默认,缺省的。在成员的前面不写访问修饰符的时候,默认就是友好的。
同一package中的所有类都能访问。
被friendly所修饰的成员只能被该类所在同一个package中的子类所继承下来。


private

私有的。只能在当前类中被访问到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值