700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JAVA异常处理 常用类 反射 集合

JAVA异常处理 常用类 反射 集合

时间:2020-03-24 12:13:30

相关推荐

JAVA异常处理 常用类 反射 集合

异常

异常:在Java中是指被一个方法抛出的对象。

分类:检查异常、运行时异常、错误

运行时异常(uncheckd):RuntimeException和其子类

检查异常(checkd/搜检异常):指Exception和其子类,且不是RuntimeException的子类;它必须经过处理才会找到

语法:

try{//被保护的代码}catch(异常的名称 e1){//捕获块}

注意:应先捕获特殊再捕获一般异常;try没有出现异常catch将不会执行

异常处理的三种选择:

1)捕获这个异常,不让他沿着调用栈继续向下抛出

2)捕获这个异常,并继续向下抛出

3)不捕获这个异常,从而导致方法调用栈中被弹出,导致对象抛出给调用栈下面的main()方法。

声明异常:

关键字:throws 在当一个方法没有处理检查异常时使用

例如:public void deposit(double amount) throwsRuntimeException{}

抛出主动异常:

关键字:throw

运行时异常可以不用声明异常,检查异常必须声明异常

final关键字:

用于在try块后创建一个代码块,且他总会运行,不管异常是否发生

注意:在方法返回之前,final块将会执行

用户自定义异常:

1)所有的异常必须是Throwable的子类

2)想编写一个会被异常自动处理过声明的规则的检查异常,就需要继承Exception类;

3)如果编写一个运行时异常,就需要继承RuntimeException类

常用类

运行平台交互的类:

System类:记录执行时间, 复制数组,确定当前系统的属性和获取获取系统环境变量等

Runtime类:可以通过他的静态方法getRuntime()获取对象

String类:

StringBuffer类:代表一个类容可变的字符串(方法是线程安全的)

StringBuilder类:代表字符串对象,性能略高

Date类:

DateFormat抽象类:方法返回特定地区格式的DateFormat对象

SimpleDateFormat类:创建其对象时需要传入日期和时间格式作为格式化的模板

Calendar抽象类

GregorianCalendar类:公历日历

随机数:

格式例如:生成0-10的随机数

Random r=new Random();int n1=r.nextInt();n1=Math.abs(r.nextInt()%10);System.out.println(n1);

装箱:基本类型 向 引用类型

拆箱:引用类型 向基本类型

正则表达式:

\; ^(开始); $(结束); *(0次或多次); +(1次或多次); ?(0次或一次); {n}(重复n次); {n,m}(最多m最少n); .(出\n之外的任何单个字符); x|y(x或y);

[xyz](所包含的任意一个字符);; [^xyz](未包含的任意字符); [a-z](范围); [^a-z](不在范围内); \b(单词边界); \B(非单词边界); \d(一个数字字符); \D(非数字);

\f(换页); \n(换行); \r(回车); \s(空白); \S(非空白); \w(下划线和任意字符); \W(非单词字符);

正确使用:

Pattern类:编译正则表达式,创建对象,先调该静态方法compile()返回一个Pattern对象

Matcher类:解析Pattern,获得对象,调用Pattern对象的matcher()方法

格式例如:

String name="y_123456";Pattern p=Pattern 。compile(正则符);Matcher m=p.matcher(name);if(matcher.matches()){}else{}

反射

Jvam中所包含提供的加载器:

1)根类加载器:加载核心Java类(jiava.*开头)

2)扩展类加载器:加载扩展的java类(java.*开头中JAR的类包)

3)系统加载器:加载自身的类

类的加载机制:

1)类的class文件读入内存中后,创建java.lang.util.class对象,一但某个被载入JVM中,同一个类就不会被再次输入

2)连接:把类的二进制系统数据合并到JRE中

3)初始化

反射:

含义:可以在运行期载入,探知和使用编译期完全未知的类

加载:class c=class.forname("全限定类名");

查看所有方法:

Method[] motheds=cl.getDeclaredMethods();for(Method me: motheds){System.out.println(me.getName());}

查看构造器:

Constructor[] co=cl.getDeclaredConstructors();for(Constructor<?> con: co){System.out.println(con);}

获取字段:

Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {System.out.println(field.getType().getName() + " " +field.getName());}

创建对象:

1 Constructor<?> constructor = cl.getConstructor(String.class, Date.class);2 SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");3 String st="2000-10-12";4 Date da=s.parse(st);5 Object obj = constructor.newInstance("张三",da);

调用方法:

1 Method setAddress = cl.getMethod("setAddress",String.class);2 Object adress = setAddress.invoke(obj,"成都");3 Method setSex=cl.getMethod("setSex",String.class);4 Object sex=setSex.invoke(obj, "男");

...表示可变参数

Java集合框架

collection接口(控制单列数据):

分为两个子接口:

Set接口(没有顺序且不能重复):

两个重要实现类:

HashSet:基于哈希算法的set接口实现,没有顺序,不允许出现重复元素

ThreeSet: 有顺序的

List接口(有顺序,可以重复)

两个重要实现类:

ArrayList:是以数组方式实现,查询效率高,插入删除效率低

LinkedList:是以链表方式实现,适合频繁增加删除元素时使用(速度快)

重要方法:

插入:对象名.add(); 返回指定:对象名.get();替换:对象名.set();删除:对象名.remove();

泛型:

作用:1)保证在集合中元素类型安全; 2)数据类型不用强制转化

实质:允许在定义接口、类时指定类型参数

例如:ArrayList<Integer> al=newArrayList<Integer>;

Interator接口:用于遍历集合的接口,有一个iterator方法,返回Interator对象

此接口方法:

更多元素:hasNaxt(); 下一个元素:nest();删除iterator返回的最后一个元素:remove();

格式:

1public static void main(String[] args) { 2 MyComparator my=new MyComparator(); 3 List<SortObject> l=new ArrayList<SortObject>(); 4 SortObject s1=new SortObject(1,4); 5 SortObject s2=new SortObject(7,9); 6 SortObject s3=new SortObject(5,6); 7 l.add(s1); 8 l.add(s2); 9 l.add(s3); 10 Collections.sort(l,my);11 Iterator it = l.iterator();12 while(it.hasNext()){ 13 Object obj = it.next();14 System.out.println(obj);15 }16 17}18 19 }

Map接口(控制键值对):

含义:对应的是一种从键(Key)到值(Value)的对应关系的集合(一对一)

两个实现类:HashMap; TreeMap;

基本方法:

返回指定键相关的值:get(); 向映射中添加键值对: put(); 删除所有元素:clear(); 删除指定:remove();

辅助类Collections和Arrays

Collections类用于对集合元素进行排序、查询、修改(静态方法)

例如排序:Collections.sort(list cmp);

Arrays类:操作数组

例如:Arrays.sort(arr);

集合当中用size获取数组长度

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。