java学习-20220815-001

发布于:2023-01-16 ⋅ 阅读:(461) ⋅ 点赞:(0)

java-基础

一、重写和重载的区别

1、重载是发生再一个类中,需要保证方法名和返回值相同,按照参数的类型,顺序,数量的不同进行使用。

2、重写发生在父类和子类之间,当然,接口中的方法也可以被重写,重写有以下规则

   2.1、重写的方法必须保证方法名,参数类型、数量、顺序要跟被重写的方法相同

   2.2、重写的方法返回值类型小于等于父类的返回值类型

   2.3、重写的方法访问修饰符需要大于等于父类的权限修饰符

   2.4、重写的方法抛出的小于等于父类抛出的异常

二、==和equals的区别

1、对于基本数据类型而言,==比较的是值,equals的本质也是==

2、==和equals对于引用类型而言,比较的是地址

3、在包装类进行比较的时候,如何不new,直接赋值的话,按照装箱拆箱的原理,无论是==或者equals,在同等值的情况下,都是true,如果包装类new了,equals比较的是值,而==比较的就是地址,结果为false

4、String中,equals 被重写了,object中的equals比较是地址,所以在两个被创建出来的对象进行比较时,需要重写equals,这样才能比较值。

三、String,StringBuilder和String Buffer的区别

1、可变性

       String中的char数组用final修饰,表示的是常量,每次发生改变的收都会创建一个新的对象,而指针就会指向这个新对象,而StringBuilder 和StringBuffer中的char数组并没有被final修饰,在发生改变的时候会直接操作原来的对象,效率大大提高

2、安全性

     String 底层有final关键字,是线程安全的,StringBuffer底层的方法加了同步锁(synchronized),也是安全的,StringBuilder比StringBuffer提升了10%-15%的效率,但却冒着线程不安全的风险。

3、继承性

StringBuilder和StringBuffer都继承自AbstactStringBuilder类

四:抽象类和接口的区别

1、抽象类是对类的抽象,是一种模板设计,接口是对行为的抽象,是一种行为规范(定制规则)

2、抽象类中可以有,构造方法,普通方法和抽象方法,可以定义普通常量和静态常量,接口只能定义静态常量。

3、在访问上,接口默认是public,抽象类中的抽象方法可以用public,protected,默认三种访问修饰符修饰。

五、synchronized(同步锁)

1、synchronized可以修饰实例方法

2、synchronized可以修饰静态方法

3、synchronized可以修饰代码块

4、在单例模式中,双重校验锁实现单例

六、访问修饰符

##访问修饰符作用给在类上,成员变量,内部类,方法上

1、public 公共权限,任意类都可以访问

2、protected 受保护的 在同一个包中可以访问,其他包如果想访问,需要继承该类

3、default(friendly) 默认权限,同包中才可以访问

4、private 私有的,同类中才可以访问


网站公告

今日签到

点亮在社区的每一天
去签到