六.Java访问权限的列表
Java中关于权限的修饰符 private,default ,protectd,public 修饰符 类的内部 同一个包里 子类 任何地方(不在同一个包里) N N private Default《默认的修饰符》 protected Y Y N Y N N Y Y Y N public
Y Y Y Y 9.接口和抽象类之间的关系
共同点:
1. 都可以有抽象方法 2. 都不能被实例化
3. 一个类要实现一个抽象类那么必须重写它里面的所有抽象方法,一个类要实现
接口,也必须重写接口中的所有的(抽象)方法
不同点:
1. 接口不是类,用interface定义,抽象类是一个用abstract修饰符修饰的类 2. 接口里面只能有抽象方法,抽象类可以有普通方法和抽象方法
3. 实现接口需要implements,实现一个抽象类,需要继承,一个类可以实现多个
接口,但是只能继承一个类
4. 接口里面定义的变量默认是public static final的,是常量 。而抽象类则没有这
个限制
注意:
a) 接口描述了方法的特征,不给出实现,一方面解决java的单继承问题,实现了强
大的可接插性
b) 抽象类提供了部分实现,抽象类是不能实例化的,抽象类的存在主要是可以把公
共的代码移植到抽象类中
c) 面向接口编程,而不要面向具体编程(面向抽象编程,而不要面向具体编程)
d) 优先选择接口(因为继承抽象类后,此类将无法再继承,所以会丧失此类的灵活
性)
多态
多态其实就是多种状态的含义,
Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。 接口,继承,重写,重载, Object类
a) Object类是所有Java类的父类
b) 如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类
toString() 转化成字符串
返回该对象的字符串表示。通常toString 方法会返回一个“以文本方式表示”此对象的字符串,Object 类的 toString 方法返回一个字符串,该字符串由类名加标记@和此对象哈希码的无符号十六进制表示组成,Object类toString源代码如下: getClass().getName() + '@' + Integer.toHexString(hashCode())
在进行String与其它类型数据的连接操作时,如:
System.out.println(student);,它自动调用该对象的 toString()方法
==与equals方法
? 等号“==”
等号可以比较基本类型和引用类型,等号比较的是值,特别是比较引用类型,比较的是引用的内存地址
== 两边是基本数据类型的时候,比较的是值相等
== 号两边是对象的时候,比较的是两个对象的内存地址是否相等,每new出一个对象,内存地址都是不一样的
当我们比较对象是否相等的时候,使用equals方法,但是我们需要重写equals方法因为在Object中equals也是通过==比较的
String不属于基本数据类型,所以String比较值是否相等也是通过equals方法
Finalize()
垃圾回收器(Garbage Collection),也叫GC,垃圾回收器主要有以下特点:
? 当对象不再被程序使用时,垃圾回收器将会将其回收 ? 垃圾回收是在后台运行的,我们无法命令垃圾回收器马上回收资源,但是我
们可以告诉他,尽快回收资源(System.gc和Runtime.getRuntime().gc()) ? 垃圾回收器在回收某个对象的时候,首先会调用该对象的finalize方法 ? GC主要针对堆内存
当垃圾收集器将要收集某个垃圾对象时将会调用finalize,建议不要使用此方法,因为此方法的运行时间不确定,如果执行此方法出现错误,程序不会报告,仍然继续运行
10.异常的基本概念
什么是异常,在程序运行过程中出现的错误,称为异常
java给我们提供了这样一个体系结构,当出现问题的时候,它会告诉我们,并且把错误的详细信息也告诉我们了,这就是异常的体系结构,这样我们的程序更健壮,我们可以把这个信息,再进行处理以下告诉用户。java异常都是类,在异常类中会携带一些信息给我们,我们可以通过这个类把信息取出来
异常的分类 异常的层次结构
ThrowableErrorException一般性异常RuntimeException
异常的分类
异常主要分为:错误、一般性异常(受控异常)、运行时异常(非受控异常)
? 错误:如果应用程序出现了Error,那么将无法恢复N,只能重新启动应用程序,
最典型的Error的异常是:OutOfMemoryError(内存溢出) 1.受控异常(非运行时异常):出现了这种异常必须显示的处理,不显示处理java程序将无法编译通过是RuntimeException以外的异常。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。 如: IOException、Io流异常 FileNotFoundException:文件未找到异常 EOFException:读写文件尾异常 MalformedURLException:URL格式错误异常 SocketException:Socket异常 SQLException sql异常
ParseException 日期格式转换异常
2.非受控异常(运行时异常):此种异常可以不用显示的处理,例如被0除异常,java没有要求我们一定要处理常见的非受控异常有:
IndexOutOfBoundsException 索引(下标)越界异常
ArithmeticException:数学计算异常 NullPointerException:空指针异常 ArrayIndexOutOfBoundsException:数组索引越界异常 ClassNotFoundException:类文件未找到异常 ClassCastException:造型异常(类型转换异常)
这些异常是不检查异常(Unchecked Exception), 程序中可以选择捕获处理,也可以不处理 。这些异常一般是由程序逻辑错误引起的。
try、catch和finally
异常的捕获和处理需要采用try和catch来处理,具体格式如下: try { 可能出现异常的代码块; }catch(异常类型变量名) { 处理异常的代码块;只有出现异常时从才会执行 }finally {大多数用于释放资源
最终执行的代码块;不管是否出现异常都会执行 }//有finally必须有try。那么有try不一定有finally
? try中包含了可能产生异常的代码
? try后面是catch,catch可以有一个或多个,catch中是需要捕获的异常 ? 当try中的代码出现异常时,出现异常下面的代码不会执行,马上会跳转到相应的catch
语句块中,如果没有异常不会跳转到catch中
finally表示,不管是出现异常,还是没有出现异常,finally里的代码都执行,finally和catch可以分开使用,但finally必须和try一块使用,通常在finally里关闭资源,采用finally来释放资源
//在try,catch处理异常的时候,必须有try和catch或finally中的任意一个,并且,catch语句可以有多个,需要注意如果捕获的异常中,存在父子类关系,那么必须先捕获子异常
? 如下格式使用finally也是正确的 try { 可能出现的代码块 }finally { 最终执行的代码块 } getMessage和printStackTrace()
如何取得异常对象的具体信息,常用的方法主要有两种:
? 取得异常描述信息:getMessage()
? 取得异常的堆栈信息(比较适合于程序调试阶段):printStackTrace();
final、finalize和finally的区别
final修饰的变量是常量,值不能被改变,在定义的时候需要显示的初始化值,final修饰方法不能被重写,final修饰的类不能被继承。finally是try。。catch连用语句,finally中的代码块一定会被执行,finalize是来自Object类的一个方法,当对象要被GC回收的时候,会调用该对象的finalize方法 垃圾回收器
如何声明异常
在方法定义处采用throws声明异常,给方法声明异常后,方法中出现的异常不用try。。。catch处理,而是抛出这个异常,方法的调用者需要处理这个异常 格式:
修饰符列表 返回值类型 方法名(参数列表)throws 异常类型1,异常类型2。。.{方法体}
如何手动抛出异常
通过throw方法来手动抛出一个异常,这种方法一般用在项目中,抛出业务异常的时候
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java基础总结大全(4)在线全文阅读。
相关推荐: