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

异常

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

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

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

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

语法:

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

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

异常处理的三种选择:

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

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

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

声明异常:

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

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

抛出主动异常:

  关键字: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=new ArrayList<Integer>;

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

    此接口方法:

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

      格式:

 1     public 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获取数组长度  

时间: 2024-08-28 13:39:16

JAVA异常处理、常用类、反射、集合的相关文章

第9篇-JAVA面向对象-常用类Ⅴ

第9篇-JAVA面向对象-常用类Ⅴ 每篇一句 :巨轮寻深水而航行 初学心得: 没有胆大的猜测就没有伟大的发现 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-13| JAVA面向对象 Ⅴ] 1.JAVA Scanner类 java.util.Scanner 是 Java5 的新特征,读者可以通过 Scanner 类来获取用户的输入 创建 Scanner 对象的基本语法格式: Scanner s = new Scanner(System.in); 使用 next 方法代码: 1

异常,常用类,集合

异常: 异常(Exception)是程序在执行过程中所产生的问题: 异常处理是每个程序员都必须面对的: 异常分类: 1.检查异常(checked): 2.运行时异常(unchecked): 3.错误(事实上错误不算异常,但却是用户或程序员所无法控制的问题) 异常处理方式: 1.捕获这个异常,不让他沿着调用栈继续向下抛出: 2.捕获这个异常,并继续向下抛出: 3不捕获这个异常,从而导致method()方法从调用栈中被弹出,异常对象继续抛给调用栈下面的main()方法; Thowable类: Tho

聊聊Java里常用的并发集合

前言 在我们的程序开发过程中,如果涉及到多线程环境,那么对于集合框架的使用就必须更加谨慎了,因为大部分的集合类在不施加额外控制的情况下直接在并发环境中直接使用可能会出现数据不一致的问题,所以为了解决这个潜在的问题,我们要么在自己的业务逻辑中加上一些额外的控制,例如锁,或者我们直接使用Java提供的可在并发环境中使用的集合类,这是一个简便而且高效的方法.那么我们下面就来了解下Java提供了哪些“神器”可以让我们安全的使用集合. 正文 非阻塞式安全列表 - ConcurrentLinkedDeque

java之常用类的用法

知识点: 包装类基本知识 JAVA并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的. 但是我们在实际使用中经常需要将基本数据转化成对象,便于操作.比如:集合的操作中. 例如使用Map对象要操作put()方法时,需要传入的参数是对象而不是基本数据类型. 为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class). 1)定义:将基本类型封装成类,其中包含属性和

Java之常用类及方法

下面我们介绍Java类库所提供的常用类及类的常用方法 一.java.lang.String 1. String类常用的构造函数 public String(String original) 使用串对象original,创建字符串对象,其中original可以是字符串常量或字符串对象 public String(char value[]) 使用字符数组value,创建一个字符串对象 public String(char value[],int offset,int count) 从字符数组valu

java高级值类反射

 类反射 类反射,这是属于java高级的技术了,如果把这个学好了,那么你的java学习之路就上了一个台阶了. 一.什么是类反射? 1.JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调           用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制. 2.反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作

我的java学习之路六:java的常用类

一. Number & Math 类方法 下面的表中列出的是 Number & Math 类常用的一些方法: 序号 方法与描述 1 xxxValue()将 Number 对象转换为xxx数据类型的值并返回. 2 compareTo()将number对象与参数比较. 3 equals()判断number对象是否与参数相等. 4 valueOf()返回一个 Number 对象指定的内置数据类型 5 toString()以字符串形式返回值. 6 parseInt()将字符串解析为int类型. 7

Java之ArrayList类(集合)

集合的由来 我们想存储多个数据,选择的容器可以是数组.而数组的长度是固定的,无法适应数据变化的需求.为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据.数组的长度不可以发生改变.但是ArrayList集合的长度是可以随意变化的. ArrayList类概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储的元素. ArrayList 中可不断添加元素,

Java 最常用类(前100名)来自一万个开源项目

大部分的 Java 软件开发都会使用到各种不同的库.近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库.每个类在同一个项目中只计数一次,下面的列表中显示前 100 名的类. 以下列表中按使用最多的类进行排序,第三个数值表示 10000 个项目里使用到该类的项目数,而完整的列表请看 here. java.util.ArrayList(6958) java.io.IOException(6866) java.util.

Java基础——常用类(Date、File)以及包装类

本文要点: 基本数据类型的包装类 字符串相关类: 不可变字符序列:String 可变字符序列:StringBuffer.StringBuilder 时间处理相关类: Date DateFormat.SimpleDateFormat Calendar Math类 File类 枚举类 一.基本数据类型的包装类(Wrapper Class) 为什么需要包装类? Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的.但是我们在实际使用中经常需要将