码迷,mamicode.com
首页 > 其他好文 > 详细

常用的类、文件操作

时间:2015-12-17 12:20:02      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

 

异常与异常处理

 

异常简介

技术分享

在Java中,所有的异常都有一个共同的祖先Throwable(可抛出)。Throwable指定代码中可用异常传播机制通过Java应用程序传输任何问题的共性。

处理异常机制

在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。

  1. 抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。
  1. 捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
使用try-catch语句捕获异常

try {

// 可能会发生异常的程序代码

} catch (Type1 id1){

// 捕获并处置try抛出的异常类型Type1

}

catch (Type2 id2){

//捕获并处置try抛出的异常类型Type2

}

关键词try后的一对大括号将一块可能发生异常的代码包起来,称为监控区域。Java方法在运行过程中出现异常,则创建异常对象。将异常跑出监控区域之外,由Java运行时系统试图寻找匹配的catch字句以捕获异常。若有匹配的catch字句,则运行其异常处理代码,try-catch语句结束。

匹配的原则是:如果抛出的异常对象属于catch字句的异常类,或者属于该异常的子类,则认为生成的异常对象与catch块不活的异常类型相匹配。

小结

try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。

catch 块:用于处理try捕获到的异常。

finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:

a)在finally语句块中发生了异常。

b)在前面的代码中用了System.exit()退出程序。

c)程序所在的线程死亡。

d)关闭CPU。

throws抛出异常

如果一个方法可能会出现异常,但没有能力处理这种异常,可以再方法声明处用throws字句来声明抛出异常。

throws语句用在方法定义时声明该方法要抛出的异常类型,如果抛出的是Exception异常类型,则该方法被声明为抛出所有的异常。多个异常可使用逗号分割。

throws语句的语法格式为:

methodname throws Exception1,Exception2,..,ExceptionN

{

    throw new Exception("异常说明");

}

方法名后的throws Exception1,Exception2,...,ExceptionN 为声明要抛出的异常列表。当方法抛出异常列表的异常时,方法将不对这些类型及其子类类型的异常作处理,而抛向调用该方法的方法,由他去处理。

自定义异常

使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。

在程序中使用自定义异常类,大体可分为以下几个步骤。

(1)创建自定义异常类。

(2)在方法中通过throw关键字抛出异常对象。

(3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。

(4)在出现异常方法的调用者中捕获并处理异常。

Java中的异常链

在try-catch做具体处理的时候,在catch部分不做具体处理而仅仅是用throw这个关键字将异常主动抛出来。然后在通过关键字throws

继续抛出该方法异常。常常会再捕获一个异常后跑出另外一个异常,并且希望把异常原始信息保存下来,这被称为异常链。

Java中的字符串

在Java中,字符串被作为String类型的对象处理。String类位于java.lang包中。默认情况下,该包被自动导入所有的程序。

1、Java字符串的不变性。String对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。(每次new一个字符串就是产生一个新的对象,即便两个字符串的内容相同。使用"=="比较为false,如果只比较内容是否相同,应使用"equals"方法)。如果是多次出现的字符常量,Java编译程序只创建一个。

Java中String类常用的方法

技术分享

  1. 字符串str中字符的索引从0开始,范围为0到str.length () – 1;

使用indexOf()进行字符或字符串查找时,如果匹配返回位置索引,否则返回-1;

使用substring(beginInsex, endIndex)进行字符串截取时,包括beginIndex位置的字符,不包括endIndex位置的字符。

"=="和equals()方法的区别:"=="判断两个字符在内存中的首地址是否相同,及判断是否为同一个字符串对象,equals()方法比较尊处在两个字符串对象中的内容是否一致。

Java中的StringBuilder类

在Java中,除了可以使用String类来存储字符串,还可以使用StringBuilder类存储字符串。当频繁操作字符串时,就会额外产生很多临时变量。使用StringBuilder或者StringBuffer就可以避免这个问题。

StringBuilder和StringBuffer区别:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全的功能,所以性能略高。

StringBuilder类的常用方法:

技术分享

Java中的包装类

Java语言是一种面向对象的语言,但是Java中的基本数据类型不是面向对象的。Java为每个基本数据类型都提供了一个包装类,这样就可以像操作对象那样来操作基本数据类型。

基本类型和包装类之间的对应关系:

技术分享

包装类主要提供了两大类方法:

  1. 将本类型和其他基本类型进行转换的方法。

将字符串赫本类型及包装类互相转换的方法。

Inter包装类的特性:

构造方法:

技术分享

常用方法:

技术分享

Java基本类型和包装类之间的转换

基本类型和包装类型之间经常需要互相转换。在JDK1.5引入自动装箱和拆箱机制后,包装类和基本类型之间的转换更加轻松便利了。

装箱:把基本类型转换为包装类,使其具有对象的性质,又可分为手动装箱和自动装箱。

拆箱:把包装类对象转换成基本类型的值,又分为手动拆箱和自动拆箱。

Java中基本类型和字符串之间的转换

基本类型转换为字符串有三种方法:

  1. 使用包装类toString()方法;

使用String类的valueOf()方法;

用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串。

将字符串转换为基本类型:

  1. 调用包装类的parseXXX静态方法;
  2. 调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱。
使用Date和SimpleDateFormat类表示时间

在java.util包中的Date类最主要的作用就是获取当前时间(使用Date类的默认无参构造方法创建的对象就代表当前时间)。

在java.text包中的SimpleDateFormat类来对日期进行格式化。

  1. 使用format()方法将日期转换为指定格式的文本。

使用parse()方法将文本转换为日期。

注意:

  1. 调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,即ParseException,因此需要进行异常处理。
  2. 使用Date类时需要导入java.util包。使用SimpleDateFormat时需要导入java.text包。
Calendar类的应用

Date类的最主要作用就是获得当前的时间,,Calendar类进行时间和日期的处理。Java.util.Calendar类是一个抽象类,可以通过getInstance()静态方法获取一个Calendar对象,此对象已由当前日期时间初始化,即默认代表当前时间,如Calendar c = Calendar.getInstance();调用Calendar类的getInstance()方法获取一个实例,然后通过调用get()方法获取日期时间信息,参数为需要或得的字段的值,Calendar.Year等为Calendar类定义的静态常量。

技术分享

Calendar类提供了getTime()方法,用来获取Date对象,完成Calendar和Date的转换,还可以通过getTimeMillis()方法获取此Calendar的时间值,以毫秒为单位。

技术分享

使用Math类操作数据

Math类位于java.lang包中,包含用于执行基本数学运算的方法,Math类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如Math.round();常用的方法:

技术分享

Java中的集合框架

 

集合的作用

在类的内部,对数据进行组织;

简单而快速的搜索大数量的条目;

有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素;

有的集合接口提供了映射关系,可以通过关键字(key)去快速查找对应的唯一对象,而这个关键字可以是任意类型查找所映射的具体对象。

集合与数组的对比

数组的长度固定,集合的长度可变;

数组只能通过下表访问元素,类型固定,而有的集合可以通过任意。

Java集合框架

Java集合架构支持三种类型的集合:规则集(Set),现行表(List),和图(Map),分别定义在Set,List,Map中。Set实例存储一组互不相同的元素(集合),List实例存储一组顺序排列的元素(表),Map存储医嘱对象-关键值的映射。

Collection接口:

    Set接口:

        HashSet具体类

        LinkedHashSet具体类

TreeSet具体类

    List接口:

        ArrayList具体类

        LinkedList具体类

        向量类Vector具体类

        Stack具体类

    Map接口:

        HashMap类

        LinkedHashMap类

        TreeMap类

具体框架如下图所示:

技术分享

List接口及其实现类—ArrayList

List是元素有序并且可以重复的集合,被称为序列

List可以精确地控制每个元素的插入位置,或删除某个位置的元素

ArrayList—数组序列,是List的一个重要实现类

ArrayList底层是数组实现的。

常用的类、文件操作

标签:

原文地址:http://www.cnblogs.com/willhunting/p/5053278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!