
介绍
大家好,我是Java面试题库的裤姐。今天的文章是 JavaSE 系列的第四篇文章。主要总结了JavaSE语法中会出现的相关面试题。后续我会按照第一篇文章开头的知识线走。不断总结,每天都做!如果我能每100天做一次构造方法没有返回类型,我希望你能跟着它,在100天内养成一个好习惯。
问:
过载和覆盖有什么区别?
方法重载和覆盖都是实现多态的两种方式。区别在于前者实现了编译时多态,而后者实现了运行时多态。
重载发生在一个类中构造方法没有返回类型,同名的方法如果有不同的参数列表(不同的参数类型,不同的参数数量,或两者兼有),则认为它们被重载;
覆盖发生在子类和超类之间。重写要求子类的重写方法和超类的重写方法具有相同的返回类型,比超类的重写方法更易访问,不能比超类的重写方法更易访问。重写方法声明更多异常(理查德替换原则)。
重载对返回类型没有特殊要求。
方法重载规则:
方法覆盖的规则:
问:
可以重写构造函数吗?可以超载吗?可以显式调用构造函数吗?
不能被覆盖,但可以重载
不能显式调用,构造函数不能作为普通方法调用。它只会在创建对象时被系统调用。
问:
解释静态变量和实例变量的区别?
静态变量:
它是一个被static修饰符修饰的变量,也称为类变量。它属于一个类,不属于该类的任何对象。无论一个类创建多少对象,内存中的静态变量都只有一份;
实例变量:
必须依赖于一个实例,你需要创建一个对象,然后通过该对象访问它。静态变量允许多个对象共享内存。
问:
什么是隐式转换?什么是显式强制转换?
显式转换是一种强制类型转换,它强制将大类型的数据分配给小类型的数据;
隐式转换是自动类型转换,大范围的变量可以接受小范围的数据;
问:
什么是拆包?
拆箱:将包装类型转换为原始数据类型
装箱:将原始数据类型转换为包装类型
问:
break 和 continue 和有什么不一样?
break 和 continue 都是用于控制循环的语句。
break 用于完全结束一个循环,跳出循环体执行循环后面的语句。
continue 用于跳过此循环并执行下一个循环。
问:
内部类和静态内部类的区别?
内部类:
1、内部类中的变量和方法不能声明为静态的。
2、内部类实例化:B是A的一个内部类,实例化B:AB b = new A().new B()。
3、内部类可以引用外部类的静态或非静态属性和方法。
静态内部类:
1、静态内部类属性和方法可以声明为静态或非静态。
2、实例化静态内部类:B是A的静态内部类,AB b = new AB()。
3、静态内部类只能引用外部类的静态属性和方法。
比较两者:
请登录后发表评论
注册
社交帐号登录