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());
}
创建对象:
Constructor<?> constructor = cl.getConstructor(String.class, Date.class);
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
String st="2000-10-12";
Date da=s.parse(st);
Object obj = constructor.newInstance("张三",da);
调用方法:
Method setAddress = cl.getMethod("setAddress",String.class);
Object adress = setAddress.invoke(obj,"成都");
Method setSex=cl.getMethod("setSex",String.class);
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();
格式:
public static void main(String[] args) {
MyComparator my=new MyComparator();
List<SortObject> l=new ArrayList<SortObject>();
SortObject s1=new SortObject(1,4);
SortObject s2=new SortObject(7,9);
SortObject s3=new SortObject(5,6);
l.add(s1);
l.add(s2);
l.add(s3);
Collections.sort(l,my);
Iterator it = l.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
} } }
Map接口(控制键值对):
含义:对应的是一种从键(Key)到值(Value)的对应关系的集合(一对一)
两个实现类:HashMap; TreeMap;
基本方法:
返回指定键相关的值:get(); 向映射中添加键值对: put(); 删除所有元素:clear(); 删除指定:remove();
辅助类Collections和Arrays
Collections类:用于对集合元素进行排序、查询、修改(静态方法)
例如排序:Collections.sort(list cmp);
Arrays类:操作数组
例如:Arrays.sort(arr);
集合当中用size获取数组长度
JAVA异常处理、常用类、反射、集合的更多相关文章
- Java中的类反射
一.反射的概念 : 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序 ...
- Java类加载和类反射回顾
今天学习Spring,突然想重新复习一下Java类加载和类反射的.巩固一下底层原理.部分参考了李刚老师的<疯狂Java讲义>和陈雄华.林开雄的<Spring3.x企业应用开发实战&g ...
- Java API 常用类(一)
Java API 常用类 super类详解 "super"关键字代表父类对象.通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始 ...
- AJPFX总结java开发常用类(包装,数字处理集合等)(一)
一:首谈java中的包装类 Java为基本类型提供包装类,这使得任何接受对象的操作也可以用来操作基本类型,直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类.jav ...
- 聊聊Java里常用的并发集合
前言 在我们的程序开发过程中,如果涉及到多线程环境,那么对于集合框架的使用就必须更加谨慎了,因为大部分的集合类在不施加额外控制的情况下直接在并发环境中直接使用可能会出现数据不一致的问题,所以为了解决这 ...
- Java中常用类(包装类扩展知识)
Java常用类有哪些? 八大基本数据类型的包装类 包装类均位于java.lang包中,包装类和基本数据类型的对应关系如下表: 基本数据类型 包装类 byte Byte boolean Boolean ...
- Java基础常用类深度解析(包含常见排序算法)
目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> ...
- java基础---常用类
一.字符串类String String:字符串,使用一对""引起来表示,字符串常量池在方法区中 public final class String implements java. ...
- Java之常用类及方法
下面我们介绍Java类库所提供的常用类及类的常用方法 一.java.lang.String 1. String类常用的构造函数 public String(String original) 使用串对象 ...
- [趣学程序]java的常用类之String
java基础之常用类 String类 String表示字符串,所谓字符串,就是一连串的字符,是java中最常用的类之一. String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内 ...
随机推荐
- Java的λ表达(lambda)
λ表达的基本目的 回调Java8的λ表达式 说明了Java8的λ表达式的基本用途:完毕了回调的原意--代码的參数化. 回调:能够简单地说,假设你的方法须要override底层或JDK的某个类的方法,并 ...
- mysql语句中使用like后面的%(百分号)的问题
问题:mysql语句中使用like后面的%(百分号) 是不是越多运行效率越慢! 总用时:0.0489秒 0.0691 0.0485 0.0467 SELECT `goods_name`, `goods ...
- Mac OS温馨提示17:七彩花哨的输入
OSX Mavericks中国的文字输入功能,色于windows,甚至提供了强大的手写输入功能和语音输入功能,而且发展到如今,已经有非常多种第三方输入法支持Mac了. 一.主要的输入法 ...
- POJ 3280 Cheapest Palindrome (DP)
Description Keeping track of all the cows can be a tricky task so Farmer John has installed a sys ...
- Codeforces Beta Round #3 A. Shortest path of the king
标题效果: 鉴于国际棋盘两点,寻求同意的操作,是什么操作的最小数量,在操作过程中输出. 解题思路: 水题一个,见代码. 以下是代码: #include <set> #include < ...
- URL压缩算法的短地址
时下,短网址应用已经在全国各大微博上開始流行了起来.比如QQ微博的url.cn,新郎的t.cn等. 我们在新浪微博上公布网址的时候.微博会自己主动判别网址.并将其转换,比如:http://t.cn/h ...
- 1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String
1.错误描写叙述 此行的多个标记: -workId -1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String. 2.错误原 ...
- [SignalR]一个简单的聊天室
原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...
- MVC中使用SignalR
MVC中使用SignalR打造酷炫实用的即时通讯功能附源码 前言,现在这世道写篇帖子没个前言真不好意思发出来.本贴的主要内容来自于本人在之前项目中所开发的一个小功能,用于OA中的即时通讯.由于当时 ...
- PHP接口和抽象类的区别
原文引自: http://blog.csdn.net/sunlylorn/article/details/6124319 一. 抽象类abstract class 1 .抽象类是指在 class 前加 ...