一、Java 八大基本数据类型
byte short char int long double float boolean
项目中一般用在各种变量如传参入参、分页等,一般用包装类
二、面向对象的三大特性
封装:把类的属性私有化并封装到公共方法内,使用方法才能对属性进行获取和修改,隐藏代码实现细节,提高程序安全性
继承:子类继承父类,获得父类的非私有属性和方法,与实现不同,继承是单继承,实现是多实现,继承后可以随意实现父类方法,实现必须实现全部抽象方法
多态:同一方法根据传入的对象不同而实现不同的功能,实现的前提是有继承并重写了父类方法且父类引用指向子类,目的是根据不同子类扩展父类方法
三、JDK与JRE的区别
JRE是Java运行时环境,包含了运行Java程序时需要的虚拟机JVM、Java类库和其他组件,但只能运行不能创建
JDK包含了JRE的全部,同时还拥有编译器和工具,可以创建和编译程序
四、Java能支持多继承和多实现吗
Java支持单继承和多实现
五、构造方法和一般方法有什么区别
构造方法在对象创建的时候进行调用,用于初始化对象,只调用一次。一般方法在对象创建后调用,可以调用多次
六、运行时异常有哪些
NullPointException 空指针异常 IndexOutOfBoundsException 数组下标越界 ClassNotFoundException 类未找到 ClassCastException 类转换异常
NumberFormatException 数字格式异常 SQLException SQL语句异常 ArithmeticException 算数异常0/1
七、抽象类和接口的区别
抽象类中抽象方法不是必须有的,接口中全是抽象方法,抽象类使用extends继承,无需重写全部抽象方法,接口使用implement,需要重写所有抽象方法
抽象类有构造器,但不能调用,主要供子类重写,接口没有构造器。抽象类是用来描述事物本质的,接口是用来规范行为或功能的
八、equals和==
==在比较基础类型时比较值,比较引用类型时比较内存地址,equals底层和等等是一致的,类可以重写equals,按照重写后的规则进行比较
为什么要重写hashCode,因为会出现equals相同但hashCode不同的情况,为保证对象相等,都得重写,同时hashCode比较比equals快,可以先执行hashCode减少equals次数来提高效率
九、String、StringBuilder、StringBuffer
String是不可变的字符串,是常量类,String str = new String("abc") 造了两个对象,abc在常量池中,new String在堆中,jdk8之后由char数组改为byte数组存储,性能提升。StringBuilder和StringBuffer是操作字符串的类,他们在改变字符串内容的过程中不会创建新的对象,在使用toString之后才会创建新的对象,StringBuffer是线程安全的,在方法上带了锁,StringBuilder是线程不安全的,适合单线程
十、字符串常量池
字符串常量池是用来存储字符串常量的,位于JVM的堆内存中,避免为相同内容的字符串常量开辟新的内存用于存储,提高了利用率和效率,创建新的字符串常量时,会优先到常量池中寻找是否存在相同字符串,有则返回引用,无则实例化一个新的常量到常量池并返回引用
十一、Object常用方法
hashCode wait notify/notifyAll(唤醒线程) equals clone
十二、String的方法
join(按照指定分隔符将数组中内容变成字符串)trim(去除空格)substring(截取) concat(将字符串连接到另一个字符串的末尾)spilt(切割)
十三、享元空间
Integer a = new Integer(100); Integer b = new Integer(100); a==b true 因为-128~127是Integer缓存区会提前创建好的
十四、如何创建对象
new 关键字调用构造器、反射使用newInstance()调用无参构造器、clone()实现cloneAble接口,重写clone方法、反序列化,readObject方法
十五、Static Final
被static修饰的变量被当前类的所有对象共享,被修饰的方法只能调用静态变量,两者都位于方法区中,修饰代码块时,随着类的加载而加载,只执行一次
被final修饰的变量是不可改变的,一般是常量,被修饰的方法不能被重写,被修饰的类不能被继承
十六、重写与重载
重写发生在子类与父类当中,重写时一般保证方法名返回值参数一致,子类修饰符不能低于父类
重载发生在一个类中,只需保证方法名一致,参数的顺序、个数、类型必须有所不同
十七、异常
标签:面试题,Java,常量,方法,基础,字符串,父类,重写 From: https://www.cnblogs.com/superdebu/p/18468405异常分为运行时异常和非运行时异常,运行时异常只有在程序运行时才会报错,常见的有NullPointException、NumberFormatException,IllegalParamException,非运行时异常在编译时就会报错,比如SqlException、FileNotFoundException