黑马程序员_java之内部类和异常
来源:互联网 发布:好玩的手游推荐 知乎 编辑:程序博客网 时间:2024/06/05 11:25
------- android培训、java培训、期待与您交流! ----------
*内部类:(成员内部类、局部内部类、匿名内部类、嵌套类)
1、将类A定义在另一个类B中。则类A就是内部类。
2、什么时候使用内部类:
有Outer和Inner两个类,当Inner想要直接访问 Outer中的成员,而 Outer需要建立Inner对象来访问Inner中的成员。这 个时候,我们就可 以把Inner定义为Outer的内部类。
class Body
{
private class Heart()
{
//调用身体的其他部分
}
}
3、访问方式:
A:内部类可以直接访问外部类中的成员,包括私有成员。
B:而外部类要访问内部类中的成员必须要建立内部类的对象。
4、内部的存放位置
A:成员位置
**可以被private,static成员修饰符修饰。
**被static修饰的内部类只能访问外部类中的静态成员。
B:局部位置
**也可以直接访问外部类中的成员。
**同时可以访问所在局部中的局部变量,但必须是被final修饰的。
Outer$Inner.class:$表示成员内部类。
Outer$1Inner.class:$1表示它是一个局部内部类。
5、为什么会出现编号呢?
因为局部内部类可以不写名字,所以带编号。
6、匿名内部类(很重要,常用):没有名字的内部类。它是内部类的简化写法。
(1)前提:内部类可以继承或实现一个外部类或者接口。
(2)格式为:new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以 自定义内容。)}
(3)简单理解:就是建立一个带内容的外部类或者接口的子类匿名对象。
(4)匿名内部类出现的位置:
A a = new(){};
fun (new A(){});(常用)
return new(){};
(5)注意:使用匿名内部类一定要在new语句中使用,new后面跟随的是父类或 者接口名称,而且两者不可兼得。
(6)代码体现:
//局部的匿名内部类(重点)
class Outer
{
public void method()
{
/*new Inter()
{
public void show1()
{
System.out.println("show1");
}
public void show2()
{
System.out.println("show1");
}
}.show1();
new Inter()
{
public void show1()
{
System.out.println("show1");
}
public void show2()
{
System.out.println("show1");
}
}.show2();*/
Inter i = new Inter()
{
public void show1()
{
System.out.println("show1");
}
public void show2()
{
System.out.println("show1");
}
};
i.show1();
i.show2();
}
}
*异常:
定义:就是程序运行过程中,遇到了问题。
异常关键字:
A:throw:抛出异常,语法:throw 异常对象();
B:throws:给方法声明异常,
语法:public static void fun()throws 异常类型{}
C:try:监控区,不能单独出现,只能与catch或finally一起出现,当然,两 者一起出现也可以。在try块中抛出异常不会导致方法返回,而是终止 当前try块的运行。
D:catch:捕获及处理异常。不能单独出现,只能与try一起出现,后面有一个 ();其中必须仅能指定一个异常类型,类型后跟随对象名。
E:finally:总是执行(仅有),执行过程:默认情况下,从上到下执行,到了 finally再执行它,在finally执行之前,方法要返回(异常返回 和return返回),这时会在返回之前先执行finally,这种执行方式我们称之为“插入执行finally”。
1、异常的体系:
Throwable
---Error:通常出现重大问题如:运行的类不存在或者内存溢出等。
不编写针对代码对其处理。
---Exception:在运行时运行出现的一些情况,可以通过try catch finally
2、Throwable
A:getMessage() :返回此 throwable 的详细消息字符串。
class Throwable
{
String detailMessage;
Throwable(){}
Throwable(String message)
{
this.detailMessage = message;
}
public String getMessage()
{
return detailMessage;
}
}
B:toString():获取异常类名和异常信息,返回字符串。
C:printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
3、处理异常处理方式:
A:try...catch...finally
格式:
try
{
需要检测的代码;
}
catch(异常类 变量)
{
异常处理代码;
}
...
finally
{
一定会执行的代码;//释放资源
try/catch处理过程:
在try中抛出异常,有对应的catch捕获,把抛出异常的语句放到try中,try是监控区,用来监控这些语句,在监控区中出现异常,不会使方法返回。这时会在catch中查找哪一个catch能够处理这个异常,找到这个catch,然后交给它,让它处理,catch捕获处理异常的块,catch块结束后,程序向下正常运行。
}
变形:
try...catch(...)
try...finally
try...catch(...)...finally
B:抛出 throws----throw
声明异常:
Public static String fun()throws Exception{}
throw手动抛出异常:
public static void main(String[] args)throws Exception{
Exception e = new Exception();
throw e;
}
throws:用于标识函数暴露出的异常。thorws用在函数上,后面跟异常 类名(可以由多个,用,隔开)。
throw:用于抛出异常对象。throw用在函数内,后面跟异常对象。
C:如何选择用哪种方式?
(1)能处理,建议处理。try...catch...finally
(2)处理不了,抛出。
D:自定义异常
自定义类继承Exception或者其子类(RuntimeException)
class MyException extends Exception
{
MyException(){}
MyException(Stirng message)
{
super(message); //super是Exception里面的
}
}
class Student
{
public void giveAge(int age) throws MyException
{
if(age>40 || age<0)
{
//throw new MyExcetpion("建议不学了");
MyExcepiont my = new MyExcetpion("建议不学了");
throw my;
}
else
{
System.out.println("符号要求,可以学习Java");
}
}
}
E:RuntimeException和Exception
区别:RuntimeException就是要你改代码的。你可以不处理。
常见异常总结:
*索引越界——ArrayIndexOutOfBoundsException
*类型转换——ClassCastExceptio
*找不到类——ClassNotFoundExceptiion
*空指针异常——NullPointException
*找不到文件——FileNotFoundException
*数据格式化异常——NumberFormatException
*找不到元素异常——NoSuchElementException
*字符串索引越界——StringIndexOutOfBoundsException
*没有被序列化异常——NotSerializableException
*需要的数据和输入的类型不匹配——InputMismatchException
*线程异常:
InterruptedException
IllegalArgumentException
- 黑马程序员_java之内部类和异常
- 黑马程序员_java基础学习之内部类
- 黑马程序员-java基础之内部类,异常,包
- 黑马程序员 ——Java基础之内部类、异常、包
- 黑马程序员——学习日记之内部类 异常
- 黑马程序员_JAVA基础2_内部类,异常1
- 黑马程序员----java之内部类
- 黑马程序员_Java异常和包
- 黑马程序员_Java异常
- 黑马程序员_Java异常
- 黑马程序员_JAVA异常
- 黑马程序员_java异常
- 黑马程序员_Java异常
- 黑马程序员_JAVA:异常
- 黑马程序员_java异常
- 黑马程序员_java内部类
- 黑马程序员_java内部类
- 黑马程序员_java 内部类
- .NET COM+技术
- 黑马程序员_java之面向对象
- Log4j的使用
- 模板方法模式深度解析(三)
- NLP 检索结果聚类
- 黑马程序员_java之内部类和异常
- “2012中国年度天使投资人”蔡文胜:彻底拥抱新趋势
- 布隆过滤器
- 黑马程序员_java之集合
- 黑马程序员_java之IO流
- proguard 不混淆内部类的方法
- 自定义NavigationBar、NavgationItem
- HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070005 由于权限不足而无法读取配置文件
- ARM体系 指定代码段地址问题的自我理解