Java面题DAY01
每日一练day01
01Java的特点和优点,为什么要选择java
02Java基本数据类型和引用数据类型
03 抽象类和接口的区别
**相同点:**1、两者都不能实例化;2、可以拥有抽象方法。
**区别:**1、抽象类定义的关键字是abstract class,接口定义的关键字是interface;
2、属性上,抽象类可以有静态变量、常量和成员变量,接口只能有常量;
3、抽象方法可以有普通方法,而接口jdk1.8之前只能有抽像方法(1.8之后,增加了静态方法和默认方法);
4、抽象方法可以有构造方法,接口不可以有构造方法。
5、一个类只能单继承一个父类,而一个接口可以继承多个父接口,同时,一个类可以实现多个接口却没有实现多个父类这一说法;6、抽象方法在业务编程上更像一个模板,有自己的功能,同时也可以有优化补充的多种形式,而接口更像是一种规范和要求,实现就要按照要求来进行。
04什么是final关键字
1.final被用来修饰类和类的成分。
2.final属性:变量引用不可变,但对象内部内容可变;被final修饰的变量必须被初始化。
3.final方法:该方法不能被重写,但子类可以使用该方法。
4.final参数:参数在方法内部不允许被修改 5.final类:该类不能被继承,所有方法不能被重写,但未被声明为final的成员变量可以改变。
05static修饰符
static修饰变量:属于静态变量也叫类变量,直属于类对象而不是实例,可以通过类名访问,它一般会在类加载过程中被初始化。生命周期贯穿整个程序。存储在方法区中。
static修饰方法:即静态方法,一个类中的静态方法不能访问该类的实例变量,只能访问静态变量。同时还存在一个静态初始化块,他在类加载过程中被调用用于对该类中的静态变量进行操作。
static修饰类:即静态内部类,他只能以内部类的形式存在,可通过外部类的类名调用。它是他也只能访问到外部的的静态成员。
06String类,以及new string和使用字符串直接量
String类被final修饰,所以不能被继承。创建String对象时可以使用字符串直接量,如String str=“1abc”, 另一种String str=new String(“1abc”),前者使用常量池来管理,后者先判断常量池中是否已存在此字符串,不存在就也在常量池创建,再在堆内存创建一个新的对象,因此后者开销更大。
07String,String Buffer,String Builder有什么区别
String是final修饰不可被继承不可变,即时修改也是新建一个变量,String通过不变的特性实现了线程之间的可见性,一定条件下可以保证线程安全。
StringBuffer和StringBuilder对象是可变的。
StringBuffer实现了Synchronize封装使得它线程安全,而StringBuilder是线程不安全的。所以从运行速度来说,StringBuilder>StringBuffer>String
08==和equals()的区别
09Java8新特性
1.Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
2.方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
3.默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
4.新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
5.Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
6.Date Time API − 加强对日期与时间的处理。
7.Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
8.Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。
因篇幅问题不能全部显示,请点此查看更多更全内容