自己看 JAVA SE_一、javase基础知识总结

1、遇到空指针异常时或 JVM自动捕获的异常,可以不用try-catch,还有把异常抛给上一级来处理的话必须要使用来抛出异常 。否则没有抛出也不会被捕获到 。下面例子:
com.leeue.;
class{
void main([] args){
tc = new ();
tc.test1();
void test1(){
//空指针异常时JVM自动捕获的异常,所以可以不用try-catch,还有把异常抛给上一级来处理的话必须要使用来抛出异常
throw new ("test1 中空指针异常");
void test2(){
test1();
2、自定义异常,继承或其他子类例子
com.leeue.;
/**
* 功能: 自定义异常
* @:leeue
* @:
* @Date 2017年11月2日 下午3:49:46
*/
class{
(){
super();//调用父类的无参构造函数
( ){
super();//调用父类带参数的构造函数
( , cause){
super(,cause);//调用父类含有cause参数的构造函数
//现在所有的子类子构造器中都可以接受一个cause对象作为参数,
//这个cause就异常原由,代表着原始异常,即使在当前位置创建并抛出行的异常,也可以通过这个cause追踪到异常最初发生的位置 。
( cause){
super(cause);
3、异常链的具体分析
见异常链 异常栈分析
只有Error,,提供了带cause参数的构造器,其他的所有异常类只能通过()来设置cause 。
所有的子类构造器中都可以接受一个cause对象作为参数 。cause是异常原由,代表着原始异常 。既可以在当前位置创建并抛出行的异常,也可以通过cause追踪到异常最初发生的位置 。
异常链是一种面向对象编程技术,指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式 。原异常被保存为新异常的一个属性(比如cause) 。这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,但不会丢弃更低层次的信息 。
把捕获的异常包装成新的异常,在新异常里添加原始的异常,并将新异常抛出,它们就像是链式反应一样,一个导致(cause)另一个
这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,(将所有捕获到的异常包装为新的异常类,即定义在相同的抽象层次上抛出)但不会丢弃更低层次的信息 。
实现异常链功能的两种基本写法:
class{
/**
* @param args
* Test1抛出喝大了异常
* Test2调用test1捕获了喝大了异常,并且包装成运行时异常,继续抛出
* main方法中调用test2尝试捕获test2方法抛出的异常
*/
void main([] args) {
try{ // TODO Auto-stub
ct=new ();
ct.Test2();}
catch( e){
e.();
} void Test1() {
throw new ("喝车别开酒");
void Test2(){
try{
Test1();
}catch(e){
rte=new (e);
//rte.(e);//第一种实现就是调用(e)在新异常添加原始的异常,第二种实现就是直接传递异常
e.();
throw rte;
4、Java中的()和==用法
是java.lang.类的方法 。有两种用法说明
1、对于字符串来说,使用“==” 和()方法比较字符串的时候,其比较方法不同:
“==”比较两个字符串在内存中的首地址 。
()比较字符串所包含的内容是否相同 。
总结:()方法对于字符串来说是比较内容的,对于其基本类型来说是比较其对象指向的内存地址是否相同
== 比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址 。
代码总结:
com.leeue.test;
/**
*总结== 和的用法
**/
class Test {
void main([] args){
s1 = "123";
s2 = "123";
s0 = "12";
s3 = s0 + "3";//因为s1是变量,s3在运行时才知道具体值,所以s3和s4是不同的对象