java SE总结(1)

版权声明:原创 https://blog.csdn.net/qq_39115469/article/details/85095787

1. 面向对象的特征:

    继承:被继承的类称为父类,继承的类称为子类。子类拥有父类的属性和方法,当然,构造方法除外。

    封装:方法就是一种封装,类也是一种封装,封装之后,外部想进行访问,必须通过一定规则。

     多态:不同子类对同一消息做出的不同反应。多态的三个前提:继承+重写+父类引用指向子类对象。

2. 访问修饰符public,private,protected,以及不写(默认)时的区别? 

     private:本类可以访问。

     default:本类+本包下的类可以访问。

     protected:本类+本包下的类+子类都可以访问。

     public:本类+本包下的类+子类+外部包都可以访问。

3. String 不是基本数据类型,是引用类型。基本数据类型有八种:byte+short+int+long+float+double+char+boolean

     分别占1 2  4  8  4  8  2  1个字节。 

4. 在定义float型数时,后面要加'F'或者'f',定义浮点型数据时默认是double类型的。

5. &:逻辑与,左边即使为假后,右边还会参与运算。

    &&:短路与,左边为假后,直接短路掉,右边不再参与运算。

6. java内存中栈 堆 方法区的区别:栈是方法执行的内存模型,每个方法执行都会创建一个栈帧。通过new关键字和构造方法创        建的对象都会放到中。方法区:用于存常量,字符串,类代码信息等一些永久不变的西。常量池是方法区的一部分。栈是线      程之间不共享的。堆和方法区是线程之间共享的内存区域。

7. Java中switch中可以放置:byte+short+char+int(java5以前)+枚举(java5以后)+String(java7之后)。

8. 用最有效率的方法计算2乘以8: 2 << 3,左移3位相当于乘以2的3次方。右移3位相当于除以2的3次方​​​​​​​。

9. 数组中有length属性,String中有length()方法。

10. break:跳出当前的循环体。 continue:跳出当前的这次循环,进行下次循环。

11. ==:即可以比较基本数据类型,也可以比较引用数据类型。比较基本数据类型时,比较的是数值。比较引用数据类型时,除       了比较数值外,还会比较地址值,两者都相等时,才为true。

      equals:用于比较引用数据类型,它是Object中的方法,没有进行重写时,比较数值+引用地址,两者都相等时,才是true.

      如果进行重写,可以只比较数值,不比较引用地址,比如String类就重写了equals方法,常用于比较字符串是否相同。

12. String类不能被继承,因为String类被final修饰。被final修饰的类不能被继承,被final修饰的值不能再被更改。即为常量。

       被final修饰的方法不能被重写。

13. String和StringBuilder、StringBuffer的区别? 

       String是不可变字符序列,因为源码private final char value[];​​​​​​​value字符数组被private final修饰。

       StringBuilder+StringBuffer是可变字符序列,源码中没有private final修饰。

       StringBuffer:会做同步检查,效率低,但安全性高。

       StringBuilder:java5才有的类,不会做同步检查,安全性低,但效率高,比较常用。

14. 重载和重写的区别:

       重载是存在同一类中,方法名相同,方法参数的个数或者方法参数类型不同则构成重载。

       重写是存在子父类之间,子类重写父类中的方法要求方法名和返回类型,方法参数类型相同,只是方法体不同,则构成重              写。

15. 抽象类和接口的区别:

       一句话概括:都是一种规范,都不能实例化,可以定义其引用,但接口比抽象类更抽象。

        抽象类中含有抽象方法,还可以含有普通方法,接口中只含有抽象方法和常量,方法默认被public static final修饰,如果

         一个类实现了接口或继承了抽行类,那么必须重写所有抽象方法

16.  一个类只能有一个父类,即单继承,但可以实现多个接口。一个接口可以继承一个或多个接口。

17.  java内存泄露:java应用程序中有些没有用的对象,但垃圾回收器无法进行回收,这就造成内存泄露。

      例如hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存

      在无用的垃圾对象,如果不及时关闭(close)或清空(flush)一级缓存就可能导致内存泄露。

18. 静态变量是被static修饰符修饰的变量,也称为类变量,它属于类,被所有此类的对象共享。静态变量在内存中有且仅有一个

      拷贝;

      实例变量必须依存于某一实例,需要先创建对象,然后通过对象才能访问到它。

19. 静态方法只能访问静态成员变量和静态方法,非静态方法的调用要先创建对象。

20. java中实现克隆的两种方式:实现Cloneable接口并重写Object类中的clone()方法。

      类实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

猜你喜欢

转载自blog.csdn.net/qq_39115469/article/details/85095787
今日推荐