Java基础知识温故知新——(1)

参考了:http://www.itlanbao.com/ns/news.aspx?s=600030

1、ArrayList,Vector,LinkedList的区别

 

ArrayList

Vector

LinkedList

实现原理

数组

数组

双向链表

线程安全

优点

1.数组实现优于遍历
2.非线程安全,效率较高

1.数组实现优于遍历
2.线程安全

1.节点的增删无需对象的重建
2.空间利用毫无浪费

缺点

1.非线程安全
2.数组中未使用元素照成了空间的浪费
3.扩容可能引起对象的重建
4.增删有可能引起数组元素的移动

1.数组中未使用的元素造成空间的浪费
2.扩容可能引起对象的重建
3.线程安全,效率相对低
4.增删有可能引起数组元素的移动

1.遍历效率较低
2.非线程安全

扩容

0.5倍增量

1倍增量

按需增删

使用场景

1.无线程的要求。
2.遍历较多,增删较少

1.有线程安全的要求
2.遍历场景较多,增删场景较少

增删场景较多的时候

2、Java堆和栈的区别

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, boolean, char)和对象句柄。

在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!总结来说变量的声明一般都是在栈内存中分配的,变量的声明相当于指针,指向堆内存中new创建的实际对象。

参考自:http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html

3、RuntimeException与普通异常,error的区别。

Checked Exception:在编译时就能够被Java编译器所检测到的。

UncheckedException:则是编译时,java编译器不能检查到。

 

RuntimeException

普通Exception

Error

受控异常

产生原因

开发者的编程错误

由于外界环境所限,
本身潜在的一些问题

Java运行时的系统错误,资源耗尽,是一种严重的,
程序无法修复的问题

例子

NullPointerException
ArrayOutOfIndexException
ClassCastException
ArithmeticException
UnsupportedOperationException

ClassNotFoundException
IOException
FileNotFoundException

VirtualMachineError
StackOverflowError
OutOfMemoryError





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值