java编程基础知识

1.Java语言的特点:面向对象,跨平台,多线程

2.Java运行环境:JVM+Java API

3.数据类型:
boolean 1
char 16
byte 8
short 16
int 32
long 64
float 32
double 64

4.面向对象:
封装:类 
继承:单一继承 
多态:重写(Overridding)与重载(Overloading)
在子类中,方法的参数个数和返回值都与父类相同,称为重写
在同一个类中,方法的参数不同,称为重载

5.作用域:
private 子类不能继承
default 如果不在同一包中,子类不能继承
protected
public
       
6.垃圾回收原理:有向图原则(另一种为计数器类型),可能会有内存泄漏,计数器类型与有向图类型相比:效率更高,但是精度偏低,因为它很难发现变量循环引用的问题
会有内存泄漏的代码:
Vector v=new Vector(10)
for (int i=0;i<10;i++){
Object o=new Object();
v.add(o);
o=null;
}
解决方法:
v=null;

7.栈与堆:原始数据类型存放在栈里,对象数据类型存放在堆中,栈中存放堆中的地址。

8.变量比较:==比较的是栈,原始数据类型相同,但是引用类型值不等,equals比较的是堆,特例是string,java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。

9.变量复制:原始数据类型复制的是值,引用数据类型复制的是栈中的引用,所以当一个修改的时候,会影响另一个。对象复制:Object.clone()方法

10.引用传递和值传递:原始数据类型传递的是值,引用数据类型传递的是栈中的引用

11.异常:(Java.lang.Exception)检查时异常,(Java.lang.RuntimeException)运行时异常,((java.lang.Error)错误,检查时异常必须处理

12.集合:collection: set:HashSet TreeSet
list:ArrayList LinkedList Vector Stack
map:HashMap TreeMap HashTable Properties

13.Set里的元素是不能重复的,什么方法来区分重复与否呢? 是用==还是
equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两
个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个
分离的对象的内容和类型相配的话,返回真值

14.ArrayList, Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据
以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元
素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方
法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序
号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即
可,所以插入速度较快。

15、HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,
主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于
Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为
contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问
Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值