1)基本特点
底层就是用数组来实现的;
在方法内部可变参可以直接当成数组进行操作;
方法调用的时候,可以传递多个参数,也可以传递数组,还可以不传或者传递一个 null;
一个参数列表只能有一个可变参,而且只能写在最后;
2)可变参对方法重载的影响
参数是数组的方法和可变参方法不能共存;
空参方法和可变参方法可以共存,不传递参数的时候默认调用空参方法(子类没有就找父类),实在没有空参,才会调用可变参方法;
(String…strs)、(String str,String…strs) 、(String str)、(String str,String str2)这样的参数列表是可以共存的,只是为了区分方法参数传递的时候比较麻烦;
是一个特殊的方法,方法名和类名相同,无返回值声明(实际上会返回对象),可以空参也可以含参;
在不写构造器的情况下,JVM会自动在一个类中注入一个空参的构造器,如果写了构造器(不管有参还是无参),则不会自动生成;
许多框架在对类进行实例化的时候会调用空参构造器,所以在构建类的时候最好明确提供一个空参的构造器以防止出错;
构造器一般用 public 修饰,少数情况会将构造器私有,来限制类对象的创建(比如单例设计的时候);
1)错误 error
运行时发生错误,编译器无法检查
从Error中恢复是不可能的
Error主要是由运行应用程序的环境引起的
示例:java.lang.StackOverflowError,java.lang.OutOfMemoryError
2)异常 exception
异常包括检查异常(对编译器已知)和未检查异常(运行时发生,对编译器未知)
可以通过try-catch块处理异常来恢复异常
异常主要是由应用程序本身引起的
检查异常:SQLException,IOException 运行时异常:ArrayIndexOutOfBoundException,ClassCastException,NullPointerException
3)个人理解:出现异常和错误都意味着我们的程序出现了问题,异常是我们能够截获和处理的问题,另一些问题比较严重,是我们不应截获和无法处理的,这些就是错误
二者都是在运行的时候发生;
检查异常是编译器能够预知的异常,代码中可能出现检查异常编译器会强制我们进行处理;
运行时异常是无法预知的,因为一些程序的逻辑问题(数组下标越界等)可能在运行时抛出;
运行时异常不具有代码侵入性,抛出运行时异常无需在方法声明的时候写 throws 语句;
检查异常如果不用 try–catch 进行处理,从异常发生方法一直到顶层的调用方法都需要写 throws 语句;
如果发生异常,try 的语句块中,发生异常的语句后面的语句会被跳过;
try-catch-finally 后面还有语句,这些语句无论是否发生异常都会执行(前提是前面没有 return);
finally 中的语句执行的时机是在 return 之前,finally中最好不要有 return ,因为可能会覆盖 try–catch 中的 return;
统一了对外异常展示的方式,可以隐藏底层的异常,这样更安全,异常信息也更加的直观;
系统中有些错误是符合Java语法的,但不符合我们项目的业务逻辑,需要使用自定义异常来进行处理;
异常链是一种面向对象编程技术,指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式,原异常被保存为新异常的一个属性(比如cause);
把捕获的异常包装成新的异常,经过层层的包装,就像链式反应一样,一个导致(cause)另一个,这样最顶层抛出的异常中也能获取到底层的异常信息(getCause方法);
异常链的意义是一个方法应该抛出定义在相同的抽象层次上的异常,同时也不应丢弃更低层次的异常信息;
异常需要封装和传递,我们在进行系统开发的时候,不要“吞噬”异常,也不要“赤裸裸”的抛出异常,封装后在抛出,通过异常链传递,可以使系统更健壮友好;
以上就是极悦小编介绍的“JAVA核心技术基础部分的总结”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习