JAVA基础
什么是多态?
子类继承抽象父类,重写父类的方法。
什么是静态变量?
静态变量被static修饰,被所有类实例对象所共享,在内存中仅有一份副本,当且仅当类初次加载时才会初始化
try、catch、finally的执行流程是怎样的?
对于可能出错的代码快放在try包裹的括号之中,当try包裹的括号中发生异常时,且恰好是catch捕获的异常时,则会执行catch中相关的语句,而无论try中是否发生异常,finally语句块最终都会执行,即便在try或catch中有return语句,也会在return之前执行finally中的语句
异常与普通的类和对象有什么差别吗?
异常除了本身可以被抛出以外,与普通对象没有什么差别,可以被继承,多态的
==和equals的区别是什么?
==比较的是栈中的值,对于基本类型来说栈中存储的是变量值,而对于引用类型来说,栈中存储的是引用类型堆中内存对象的地址。
equals是object类中的一个方法,若不对object方法进行重写,那么equals的效果与==是等价的,我们知道object是java所有对象的父类,那么通常其他的类会对object类中的equals方法进行重写,如String类,重写后其比较有String的对象的地址比较转化成为了String值的比较
抽象类是什么?为什么要弄抽象类
对于一些类不应该被初始化,为什么?因为这些类通常是对某些具有相似功能类的抽象,没有办法被具体化
设置抽象类唯一的目的是被其他类所继承,继承的类可以对抽象类的方法进行重写或重载
重载和重写的区别是什么?
重载:发生在同一个类中,是方法名相同,但方法体中的参数的个数、顺序、类型不同,方法体的访问修饰符和返回值可以相同也可以不同。
注意:若其他条件相同,仅返回值不同则不构成重载
重写:发生在子父类之间,方法名,参数列表必须相同,子类的访问修饰符应该大于等于父类;方法返回值,抛出异常范围应该小于等于父类,若父类的方法被private访问修饰符修饰,则不能对该方法进行重写
接口和抽象类的区别是什么?
(1)一个类可以实现多个接口,而只能单继承一个抽象类
(2)抽象类中可以有普通成员函数,而接口中的方法都是抽象方法
(3)抽象类中的成员变量类型可以任意,而接口中的成员变量类型只能为public static final 类型的
构造函数是什么?
(1)构造函数可以要求传入参数,这样可以对参数进行检查和封装,方便使用
(2)构造函数可以有多个,当写了有参构造函数时,一般会再写一个无参构造函数。
(3)当类中没有写构造函数时,系统默认设置为无参构造函数
(4)若父类中为有参构造函数时,在使用子类的构造函数时,子类必须显式调用父类构造函数,若父类为无参构造时,可以不显示调用,系统默认调用父类的无参构造函数
成员变量和局部变量是什么?
成员变量,定义在类中,局部变量定义在方法中。
位运算符:左移右移,移动的是数而不是小数点,
左移<< 左移,相当于二进制数后添0,相当于扩大2倍
右移>> 右移,相当于缩小2倍,符号位填充高位
无符号右移>>>,0填充高位
- F 2. T 3. F 4. F 5. T 6. F
new 创建的在堆中,常量是在常量池中,intern()指向常量池的地址,s1,s2,s3这些引用变量存放在栈中
String 、StringBuilder和StringBuffer
String 被关键字final修饰,不可变,因此每次字符串的操作,都会创建新对象
StringBuilder:高效,但线程不安全
StringBuffer:线程安全,其中的每个方法都被Synchronized修饰
性能:StringBuilder>StringBuffer>String,通常优先使用StringBuilder,在需要多线程,共享字符串时使用StringBuffer
public、protected、private、default(friendly)的区别:
public:所有类都能使用
protected:自身、子类、同一个包下都能访问
private:自身
default:同一个包下
局部变量和成员变量名字相同时,怎么使用成员变量?
使用关键词this.名字
如果某个内容是被所有对象所共享的,应使用什么关键字?
static
类变量和成员变量的区别?
类变量是类中被static修饰的变量
super关键字的作用是什么?
(1)使用父类构造函数
(2)调用父类的成员