异常学习 + 数组

关于finally语句块

1、finally语句块可以直接和try语句块连用 try...finally...
2、try...catch...finally也可以
3、在finally语句中的代码是一定会执行的

finally语句块是一定会执行的,所以通常在程序中为了保证某资源一定会释放,
所以一般在finally语句块中释放资源

final finalize finally 三者区别

final: 1、如果一个类被声明为final,意味着该类不能在派生出新的子类
		不能作为父类被继承,因此,一个类不能同时被abstract和final声明;
		2、将变量或方法声明为final,可以保证在使用中不被改变,但是只能引用,不能重写;
		其初始化可以在两处:一是在定义处
						   二是在构造函数中

finalize:finalize是方法名,java奇数允许使用finalize()方法在垃圾收集器将对象从内存中清除
出去前做的必要的清理工作

finally:在异常处理是提供finally块来执行任何清除操作,如果抛出一个异常,
那么相匹配的catch子句就会执行,然后控制就会进入finally块

重写的方法不能比被重写的方法抛出更宽泛的异常

class A{
public void m1() throws IOException();
}

class B extends A{
public void m1() throws FileNotFoundException();
}

自定义异常

/*
固定写法:只需要构造两个构造方法就行

自定义无效名字异常
	1、编译时异常:直接继承Exception
	2、运行时异常:直接继承RuntimeException

*/
public class IllegalNameException extends Exception{//编译时异常
//public class IllegalNameException extends RuntimeException{//运行时异常

public IllegalNameException(){}

public IllegalNameException(String msg){
	super(msg);
}	

}

数组

数组:
1、数组是一种引用数据类型

2、数组是一种简单的数据结构,线性的结构

3、数组是一个容器,可以用来存储其他元素,数组
是可以存储任意数据类型的元素

4、数组分为一维数组,二维数组,三维数组,多维数组

5、数组长度不可变

总结:

	1、JVM分为堆和栈,栈存储了main方法栈帧:里面存放的是地址
					 堆存放的是对象或数值
	
	2、数组中每个元素都有下标,有索引,从0开始,任何一个数组都有length属性用来获取数组中元素的个数

	3、获取数组元素:获取第一个元素:a1[0];获取最后一个元素a1[a1.length-1]

	4、数组的优点:查找效率高;缺点:随意的增删元素效率比较低

什么时候使用动态初始化,什么时候使用静态初始化

1、无论是动态初始化还是静态初始化,最终的内存分布都是一样的
	
	2、如果在创建数组的时候,知道数组中应该储存神呢数据,这个时候当然采用静态初始化方式
	如果在创建数组的时候,无法预测到数组中存储什么数据,只是先开辟空间,采用动态初始化方式

深入一维数组

c = (Cat)a;
c.move();
}else if(a instanceof Dog){
Dog d = (Dog)a;
d.eat();
}
}
}
}

class Animal{

}
class Dog extends Animal{

public void eat(){
	System.out.println("Dog eat");
}

}
class Cat extends Animal{

public void move(){
	System.out.println("Cat move");
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值