目录
1.String、StringBuilder、StringBuffer的区别
10. final有什么用,和finally,finalize有什么区别
12. break ,continue ,return 的区别及作用
14. static修饰的方法能调用非static修饰的变量和方法吗
15. 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final
16. 重载(Overload)和重写(Override)的区别
17. 构造器(constructor)是否可被重写(override)
1.String、StringBuilder、StringBuffer的区别
1.String是字符串常量,对象一但创建就不会改变,StringBuilder和StringBuffer创建的对象是可以直接被改变的
2.运行速度:StringBuilder>StringBuffer>String
3.线程安全:StringBuffer的许多方法都带有synchronized这个关键字,可以保证线程的安全,StringBuilder没有这个关键字,不能保证线程的安全
2.比较equals和 == 的区别
1. ==可以判断基本类型,也可以判断引用类型,如果是基本类型比较的是值,如果是引用类型,比较的是两个对象的地址值
2.equals判断两个对象是否相等,没有重写Object类的equals方法,比较的还是地址值,重写后的equals方法,比较的是两个对象的内容是否相等
3.是否可以继承String类? 为什么用final修饰?
不可以继承,因为String是被final修饰的,被final修饰的类为最终类,是不能被继承的,为了效率和安全
用final修饰的原因:
1. 将方法锁定,防止任意继承关系修改的它的意义和实现
2. 高效,编译器在遇到final修饰的方法时会转入内嵌机制,大大提高了效率
内嵌机制:当代码遇到调用final方法时,会直接展开,而不是用函数调用的形式,从而提高了函数运行效率
4. 什么是面向对象编程
面向对象编程就是用类 方法 封装 继承 多态等概念进行程序设计,从我们的日常生活中存在的事物出发来构造软件系统,尽可能运用人类的自然思想进行程序设计
5. 面向对象编程的三大特征
继承:子类继承父类,子类会有父类所有的行为和属性,以便抽取和调用,还可以追加行为和属性,继承支持单继承,多层继承,不支持多继承
封装:就是把一个类的行为和属性抽取出来封装起来,提高了代码的复用性
多态:父类引用指向子类实现,实现多态有三个条件:继承、重写、向上转型
6. JDK、JRE、JVM分别是什么
JDK:开发者工具包,包含了JRE和JVM
JRE:运行环境,包含了JVM和核心类库
JVM:虚拟机
7. JAVA的基本数据类型(四类八种)
整型:byte short int long
浮点型:float double
布尔型:boolean
字符型:char
8. 什么是方法签名
方法签名是一个方法的唯一标识符,有方法名和参数列表组成
9. java中的访问修饰符
public:可以被类的内部,子类,同一包下的其他类以及其他包下的类访问
protected:可以被类的内部,子类,同一包下的其他类访问,不同包下的类要通过子类的对象才能访问
default(默认):可以被类的内部和同一包下的其他类访问,不同包下的类不可以访问
private:只能被类的内部访问,其他类都不可以访问,包括子类
10. final有什么用,和finally,finalize有什么区别
final是最终的意思,被final修饰的类为最终类,不能被继承,被final修饰的方法不能被重写,被final修饰的变量为常量,不可以重新赋值
finally一般用于try-catch结构中,表示不管是否出现异常,finally的方法都会被执行
finalize是Object类的方法,一般用于垃圾回收器中
11. this和super的区别
1. this指向的是自身的一个对象,代表对象本身;super指向的是自己的一个超类对象,这个超类对象是最近的一个父类对象
2. this()调用的是本类的其他构造方法;super()调用的是父类的构造方法
12. break ,continue ,return 的区别及作用
break:跳出当前循环或switch语句的执行;在循环中,当满足某个条件时,使用break语句可以强制退出当前循环;在switch语句中,当匹配当某个case后,可以用break语句强制退出switch语句,避免执行其他case
continue:结束当前循环并进行下一次循环;在循环中,当满足某个条件时,可以使用continue语句直接跳过当前循环中的其他语句,直接进入下一轮循环
return:可以将执行的结果返回给调用者,并结束方法的执行
13. 抽象类能被final修饰吗
不能。
被final修饰的类为最终类,是不能被继承的,而抽象类本身是要实现继承的,两者相互冲突,所以不能被final修饰的
14. static修饰的方法能调用非static修饰的变量和方法吗
不能
因为静态方法创建出来的时候,非静态资源还没有创建出来,所以只能访问静态方法和变量
15. 局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final
因为生命周期不一致,局部变量保存在栈中,方法结束后,非final修饰的变量就会销毁,但局部内部类对局部变量的引用仍然存在,调用局部变量的时候就会出错
16. 重载(Overload)和重写(Override)的区别
重载:在同一个类中,有多个方法的方法名相同,但参数列表(参数个数、参数类型、参数顺序)不同,构成了方法重载
重写:在继承的条件下,在子类中重新定义了一个父类中已有的方法,方法名和参数列表必须相同,使用@Override注解来规范方法重写
17. 构造器(constructor)是否可被重写(override)
不能
构造器不可以被继承,所以不能被重写,但是构造器可以被重载
18. Java中创建对象的方式有哪些
1. 使用关键词:new
2. 使用Class类的newInstance方法
3. 使用Constructor的newInstance方法
4. 使用clone方法
5. 使用反序列化