- 浏览: 94957 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wataxi:
第7, 8个说的好像不对,
#dd a{
te ...
我理解中的css样式表 -
show_time:
基本语句很详细呀
oracle辅导(1--3) -
yinxiangbing:
不错,很详细。。。
Struts-config.xml配置文件讲解 -
zhuyingya87:
真的不错。。
Struts-config.xml配置文件讲解 -
被判孤寂:
语句还可以,满全面。如果加上实例和图片,就更直观了
oracle辅导(1--1)
局部内部类
局部内部类是定义在方法中的内部类。
局部内部类不能够加权限修饰符,其范围为定义它的代码块。
注意:局部内部类不仅可以访问外部类私有实例变量,但可以访问外部类的局部常量(也就是局部变量必须为final的)
局部内部类的特点:不能直接访问局部内部类(保证局部内部类对外是不可见的),只有在方法中才能访问其局部内部类。
局部内部类的作用
通过内部类和接口达到一个强制的弱耦合,用局部内部类来实现接口,并在方法中返回接口类型,使局部内部类不可见,屏蔽实现类的可见性。
局部内部类写法
public class TestLocalInnerClass{
public static void main(String[] args){
Outer o=new Outer();
final int a=9;
o.print(a);
}
}
class Outer{
private int index=100;
public void print(final int a){
final int b=10;
System.out.println(a);
class Inner{
public void print(){
System.out.println(index);
System.out.println(a);
System.out.println(b);
}
}
Inner i=new Inner();
i.print();
}
}
匿名内部类
匿名内部类是一种特殊的局部内部类,可通过匿名类隐式的实现接口。
匿名内部类的特点:
1,一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先或是覆盖。
2,只是为了获得一个对象实例,不许要知道其实际类型。
3,类名没有意义,也就是不需要使用到。
注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。
匿名内部类的特点
1) 因其为局部内部类,那么局部内部类的所有限制都对其生效。
2) 匿名内部类是唯一一种无构造方法类。
3)大部分匿名内部类是用于接口回调用的。
4)匿名内部类在编译的时候由系统自动起名Out$1.class。
5)一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。
6)因匿名内部类无构造方法,所以其使用范围非常的有限。
匿名内部类和局部内部类的区别
需要返回多个对象时,使用局部内部类,局部内部类的应用相对较多。匿名内部类中不写构造方法。
匿名内部类的写法:
interface A{
void ia();
}
class B{
public A bc(){
return new A{
void ia(){
System.out.println(“ia”)
}
};
}
}
使用匿名内部类:
public class Test{
public static void main(String[] args){
B b=new B();
A a=b.bc();
a.ia();
}
}
Exception(例外/异常)
对于程序可能出现的错误应该做出预案。
异常是程序中所有出乎意料的结果。(关系到系统的健壮性)
JAVA会将所有的异常封装成为一个对象,其根本父类为Throwable。
异常的分类
Throwable有两个子类:Error和Exception。
Error对象表示程序错误,是底层的、低级的、不可恢复的严重错误。此时程序一定会退出,已经失去了运行所必须的物理环境。对于Error错误无法进行处理。因为我们是通过程序来应对错误,可是程序已经退出了,就无法处理了。
我们可处理的只是Exception类的对象表示的程序异常(例外/异常)。
Exception有两个子类:Runtime exception:(未检查异常)可以在编程时避免,可处理可不处理
非Runtime exception:(已检查异常)必须进行处理。
注意:无论是未检查异常还是已检查异常在编译的时候都不会被发现,在编译的过程中检查的是程序的语法错误,而异常是一个运行时程序出错的概念。
未检查异常是因程序员没有进行必要的检查,因疏忽和错误而引起的异常。属于虚拟机内部的异常(比如空指针)。
应对未检查异常就是养成良好的检查习惯。
已检查异常是不可避免的,对于已检查异常必须事先定义好处理方法。
已检查异常是跨越出了虚拟机的范围外的异常。(比如“未找到文件”)
异常的传递
如何处理已检查异常(对于所有的已检查异常都要进行处理):
首先了解异常形成的机制:
一个方法中有一条语句出现了异常,会throw(抛出)一个例外对象(throw 异常对象),其后的语句不会执行并将异常返回给上一级方法,上一级方法接受到了例外对象后,可能对这个异常进行处理,也可能将这个异常继续向上传递。
注意:当一个方法中出现了异常,没有进行异常处理,方法就会把异常对象作为返回值返回。如果有异常进入虚拟机,那么虚拟机就会立刻中止程序的执行。
异常的处理方式
非RuntimeException 已检查异常必须处理,不处理编译不通过。
已检查异常处理方式:throws和try..catch(...){}方法。
注意:抛异常的方法可能是JDK定义的,也可能是程序员写的程序,无论谁写的,抛出一定用throw。
方法的定义中声明方法可能抛出的异常,用(throws 异常类名,异常类名) ,声明这个方法不处理异常,把异常交给上一级方法处理。可以抛出的是实际产生异常或其父类的异常对象。
例:public void print() throws Exception{}
对于方法a,定义了throws Exception。它调用的方法b返回异常对象时,方法a并不处理,将这个异常对象向上一级返回,所有的方法均不进行处理,异常返回到主方法,程序会中止。(要避免所有的方法都向上级抛异常,因为这样出现一个很小的异常就会令程序中止)。
throws(抛)异常时,可以使用多态,一个方法声明抛出异常时,调用这个方法的方法就要处理该异常(已检查异常),要么抛出一个兼容类型的异常(调用的方法抛出异常的父类或者是相同类型)
例:
public class Test{
public static void main(String[] args)throws Exception{
Test t=new Test()
t.a()
}
public void a()throws IOException,EOFException{
b();
……
}
public void b()throws EOFException{
……
}
}
在方法的程序中有一行throw new Exception(),抛出异常,其后的程序不再执行。异常对象抛出后,后面的程序没有执行机会,JAVA认为异常出现后的程序没有存在的必要。
try..catch捕获异常
对于try……catch格式:
try {
可能出现错误的代码块
}catch(Exception e){
进行处理的代码
}
用这种方法,代码正确,程序不经过catch语句直接向下运行;
代码不正确,则将抛出的异常对象和e的类型进行匹配,匹配成功,运行相应异常处理代码即catch块中代码。(用Exception来声明e的话,Exception为所有异常对象的父类,所有肯定匹配成功)。处理完代码后这个例外就完全处理完毕,程序会接着捕获异常的catch块的地方向下执行,最后程序正常退出。
try块中的代码如果没有出现异常,就会跳过catch,正常执行。
try块中抛出了异常,即跳出try块去匹配catch块,try块中抛出异常之后的语句不会执行,在try块中不能写return语句。
一个try块可以跟多个catch块,用于处理不同情况。一个try块中抛出异常后只匹配一个和处理抛出类型异常兼容的catch块。
我们可以写多个catch块,不能将声明处理try块中抛出实际异常类型的父类型异常的catch块,写在声明处理try块中抛出的实际类型异常的catch块之前。
try块中抛出的异常,先匹配处理其实际异常类型的父类型的catch块,处理抛出实际类型异常的catch块成了永远不会被执行的代码,java中是不允许写这样的代码,编译不通过。
例:
EOFException是IOException的子类,以下写法是错误的,编译不通过
try{
……
}catch(IOException e){
……
}catch(EOFException ex){
……
}
发表评论
-
corejava辅导(2--3)
2008-12-13 08:37 1112java中的数组Array Java中的每一个数组就是都是 ... -
corejava辅导(17--3)
2008-12-03 17:53 829*1: 名为DoCallStuff类实现了Callable,S ... -
corejava辅导(17--2)
2008-12-03 17:51 835处理自定义注释的类 例: import java.lang.r ... -
corejava辅导(17--1)
2008-12-03 17:48 682JAVA5.0 的注释 (Annotation) 描述代码 ... -
corejava辅导(16--4)
2008-12-03 17:46 772泛型方法的定义 把数组拷贝到集合时,数组的类型一定要和集合 ... -
corejava辅导(16--3)
2008-12-03 17:44 738java5.0中的泛型 说明 增强了java的类型安全 ... -
corejava辅导(16--2)
2008-12-03 17:29 694可变长的参数 在java5.0中,可以使用一种变长参数,也就是 ... -
corejava辅导(16--1)
2008-12-03 17:25 834Java5.0的新特性 自动装箱和自动拆箱 自动封箱和 ... -
corejava辅导(15)
2008-12-03 17:18 715反射 反射,在运行时,动态分析或使用一个类进行工作。 类对 ... -
corejava辅导(14--4)
2008-12-03 17:15 777UDP socket 这种信息传输方式相当于传真,信息打包, ... -
corejava辅导(14--3)
2008-12-03 17:13 767TCP Socket TCP是Tranfer Con ... -
corejava辅导(14--2)
2008-12-03 17:10 658JAVA网络编程 网络基础知识 网络编程的目的就是指直 ... -
corejava辅导(14--1)
2008-12-03 17:08 671ObjectInputStream和ObjectOutputS ... -
corejava辅导(13--2)
2008-12-03 17:00 781BufferInputStream和BufferOutputS ... -
corejava辅导(13--1)
2008-12-03 16:56 766Java中的I/O 使用I/O流访问file中的内容。 J ... -
corejava辅导(12--3)
2008-12-03 16:53 715基本输入输出所使用的类的介绍: FileInputSt ... -
corejava辅导(12--2)
2008-12-03 16:51 704处理跨平台性 对于命令:File f2=new file( ... -
corejava辅导(12--1)
2008-12-03 15:56 738死锁问题 多线程不释放自己拥有的锁标记,而想申请其他线 ... -
corejava辅导(11--2)
2008-12-03 15:52 727共享数据的并发处理 多线程同时并发访问的资源叫做临界资源 ... -
corejava辅导(11--1)
2008-12-03 15:46 733Java多线程编程 进程,即运行中的程序,多任务操作系统中 ...
相关推荐
赠送jar包:aliyun-java-sdk-core-4.3.9.jar; 赠送原API文档:aliyun-java-sdk-core-4.3.9-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.3.9-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
赠送jar包:aws-java-sdk-core-1.11.939.jar 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar 包含翻译后的API文档:aws-java-sdk-core-1.11.939-...
赠送jar包:aliyun-java-sdk-core-4.5.30.jar 赠送原API文档:aliyun-java-sdk-core-4.5.30-javadoc.jar 赠送源代码:aliyun-java-sdk-core-4.5.30-sources.jar 包含翻译后的API文档:aliyun-java-sdk-core-4.5....
赠送jar包:aliyun-java-sdk-core-4.5.10.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.10-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.10-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
aliyun-java-sdk-core-3.2.3 aliyun-java-sdk-core-3.2.3aliyun-java-sdk-core-3.2.3
ckeditor-java-core-3.5.3-javadoc.chm
Core Java Volume I--Fundamentals(10th) 英文epub 第10版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
赠送jar包:aws-java-sdk-core-1.12.160.jar; 赠送原API文档:aws-java-sdk-core-1.12.160-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.12.160-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.12....
赠送jar包:aws-java-sdk-core-1.11.939.jar; 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.11....
ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar
aliyun-java-sdk-core-3.4.0.jar
赠送jar包:aliyun-java-sdk-core-4.3.9.jar; 赠送原API文档:aliyun-java-sdk-core-4.3.9-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.3.9-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
赠送jar包:aliyun-java-sdk-core-4.5.10.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.10-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.10-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dysms-api包
Core Java Volume II--Advanced Features(10th) 英文azw3 第10版
赠送jar包:aliyun-java-sdk-core-4.5.30.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.30-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.30-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
aliyun-java-sdk-dysmsapi-1.0.0.ja jar aliyun sdk java core
Java核心技术第九版Java7,Mobi格式电子书。Core Java Volume I--Fundamentals (9th Edition)
--Fundamentals 9th Edition).rar》是一个包含两本经典Java编程书籍的压缩文件,分别对应《Core Java Volume I--Fundamentals 9th Edition》和《Core Java Volume II--Advanced Features 9th Edition》的第九版。...
在这个场景中,"aliyun-java-sdk-core-4.1.0.jar" 是一个Java版本的核心SDK,主要用于与阿里大于的各项服务进行交互,特别是短信发送功能。 一、阿里大于SDK核心功能 1. **身份验证**:SDK提供了基于AccessKey的...