方法重载和方法重写
方法重载
发生在一个类中。只有参数列表,不一样。
重载是编译期间的活动
方法重写
方法重写,只适用于继承或实现。子类和父类。修饰符只能扩大不能缩小。参数列表必须相同。返回类型只能是他的子类型,或者相同。重写是运行时期的活动
super和this关键字
this关键字的使用方式
当前对象
1、放在变量前面,用来区分同名的成员变量和参数
2、放在方法的前面,用来在本类中调用其他本类的方法,一般不用
3、放在构造器前面,用来在一个构造器中调用其他的构造器,在构造器中一定要放在第一行
super关键字:
super代表当前类的父类的对象
super.变量,代表访问父类的变量值
super.方法名(); 代表调用父类的方法
super(); 代表调用父类的空参构造器
super和this一样,都必须放在构造器的第一行
super关键字和this关键字不能同时出现在同一个构造器中
final和finally
final::
final修饰的属性不可再次被赋值,修饰的方法不能被继承。
finally:
多用于处理异常时,不管有没有异常被抛出,捕获,finally代码块一定会执行。
finalize:
是方法名,用于整理系统资源或者执行其他清理工作。
运行时异常和编译时异常
在编译的时候,如果代码抛出这种类型的异常,那么编译器会直接忽视掉的。
在编译的时候,如果代码抛出这种类型的异常,那么编译器会报错,提示我们需要对这个 类型的异常进行处理
Class和class
class是java中的关键字,声明类的时候需要用到。
Class是JAVASE-API中提供的一个类,这个类就是我们使用反射功能的入口。
泛型的上限和下限
下限:泛型参数 ? super Number ?是Number的父类型
上限:泛型参数 ? extends Number ?是Number的子类型
接口和抽象类
接口和抽象类的相同和不同:
相同点:
都能够定义抽象方法
都不能被实例化
抽象类要靠其子类继承
接口要靠实现类来实现,接口可以通过匿名内部类的形式来临时new一下
不同点:
抽象类只能继承一个,但接口可以实现多个
抽象类中可以提供方法的实现,避免子类重复继承
接口中一般只提供抽象方法。
Sleep()和Wait()
执行sleep方法,线程进去睡眠状态,会让出cpu执行权,但是不会把锁让出。
执行wait方法,线程会进去等待状态,会让出锁和执行权。
&和&&
&即使第一个条件不成立也会执行第二个
&&第一个条件不成立会直接退出,不会判断第二个
breeak,continue,return
1.return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。
一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之
结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于
多少层循环之内。
2.continue的功能和break有点类似,区别是continue只是中止本次循环,
接着开始下一次循环。而break则是完全中止循环。
3.break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在
循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。 break不仅
可以结束其所在的循环,还可结束其外层循环。此时需要在break后紧跟一个标签,
这个标签用于标识一个外层循环。Java中的标签就是一个紧跟着英文冒号(:)的标
识符。且它必须放在循环语句之前才有作用。
==和equals()的区别
1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即 栈中的内容是否相同。
3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为tr ue。