Java总结(二)


1. 面向对象的特征有哪些方面?  封装:对外部不可见 继承:扩展类的功能 

多态:方法的重载及对象的多态性

 2. String是最基本的数据类型吗?  不是,是引用类型,(除了8中基本数据类型以外的都是引用类型)

 3. int 和 Integer 有什么区别?  Int是基本数据类型,直接存数值 Integer是对象类型,用一个引用指向这个对象(Integer是一个类,是int的扩展,定义了很多的转换方法)是int的封装类(两个都可以表示某一个数值,但不能互用,因为是不同的数据类型)

 4. String 和StringBuffer的区别?  String(对象内容是不可改变的):是final类,即不能被继承,是对象不是原始类型,为不可变的对象,一旦被创建就不能改变它的值,对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。 

StringBuffer(可以改变,并且高效):是一个可变的对象,当对他改变时不用像String那样重新建立对象,他只能通过构造函数来建立,StringBuffer sb=new StringBuffer()对象被建立之后,在内存中就会分配内存空间,并初始保存一个null,通过他的sppend方法向其赋值,  

(百度:  String:是对象不是原始类型.           为不可变对象,一旦被创建,就不能修改它的值.           对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.           String 是final类,即不能被继承.   StringBuffer:           是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象           它只能通过构造函数来建立,          StringBuffer sb = new StringBuffer();          对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.通过它的append方法向其赋值.           sb.append("hello");   字符串连接操作中StringBuffer的效率 ...) 

 

5. 运行时异常与一般异常有何异同?  运行时异常是程序在运行时出现的异常 

一般异常是程序在编译时就需要进行的异常处理,否则不能进行编译

 6. 说出ArrayList,Vector, LinkedList的存储性能和特性。 

ArrayList和Vector都是使用数据组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,他们都允许直接按序号索引元素,但插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,  ArrayList:(是线程不安全的,是异步的) Vector:(是线程安全的,也就是同步的,当数据增长时,Vector默认增长是原来一倍)使用了synchronized方法(线程安全)通常性能上较ArrarList差 

LinkedList:使用双向链表示实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

   

7. Collection 和 Collections的区别。  Collection:是集合类的上级接口,继承与他的接口主要有set和List,实现类主要有,AaaayList,HashSet,LinkedList,TreeSet,Vector等, 
Collections:是针对集合类的一个帮助类,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
(百度:Collection 和 Collections的区别。 Collections是个java.util下的类,它包含
有各种有关集合操作的静态方法。 Collection是个java.util下的接口,它是各种集合结构的父接口。 List, Set, Map是否继承自Collection接口? List,Set是  Map不是 ArrayList和Vector的区别。一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 HashMap和Hashtable的区别 一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值:只有HashMap可以让你将空值作为一个表的条目的key或value  

)  

 

8. &和&&的区别  
&:逻辑与  两边的操作都需要判断 
&&:短路与  当第一个操作数为假时,则第二个数不进行判断  
表达式1&&表达式2: 表达式1不成立,则表达式2不执行; 

表达式1&表达式2:表达式1不成立,表达式2也执行  

 

9. HashMap和Hashtable的区别。  HashMap:(使用散列表来实现Map接口,是一种映射类,直接支持Iterator输出,出现较晚)是java1.2引进的Map接口的以实现,他是线程安全,也就是同步的,它允许集合中有一个null键和集合中有多个null值 
Hashtable:不支持迭代函数,采用映射的方式,出现较早,是基于旧的Dictionary类的,他是线程不安全,也就是异步的,与HashMap是同一版本,HashMap允许有个null值和一个null键,但是Hashtable不允许任何内容为null,Hashtable类的对象必须覆盖Object类的hashCode()和equals()  
(百度:Hashtable和HashMapHashtable和HashMap类有三个重要的不同之处。也许最重要的不同是Hashtable的
方法是同步的,而HashMap的方法不是。一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。 

)  


10. final, finally, finalize的区别。  Final:修饰的是基本类型,就表示这个变量被赋予的值是不可变的,即它是个常量,final修饰的方法不能被子类重写,但不影响子类的继承(private访问权限的方法也可以增加final修饰,但由于子类无法继承private方法,因此也无法重写)final修饰的类不能被继承 


Finally:只用在try-catch-finally语句中,不论有异常还是没有异常,这段语句最终总被执行 Finalize:此方法是Object类中的一个方法(所有类都有这个方法),是GC(garbage collertor)运行机制的一部分,是在GC清理它所从属的对象时被调用的,如果执行它的过成中抛出了无法捕获的异常(uncaught  exception),GC将终止对该对象的清理,并且该异常会被忽略,知道下一次GC开始清理这个对象时,它的Finalize()会被再次调用,调用他们的作用只是建议垃圾收集器(GC)启动,清理无用对象释放内存空间,但GC的启动并不是一定的,这有java虚拟机来决定,知道java虚拟机停止运行  
(百度:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 
 (window.cproArray = window.cproArray || []).push({ id: "u3054369" });
finally是异常处理语句结构的一部分,表示总是执行。 
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。) 
 
《注意:final是Java中的访问修饰符,一个类被声明为final,则意味着这个类不能被继承,不能有子类,一个方法被声明称final则该方法不能被重写,一个变量被声明为final则该变量在运行时无法动态更改变量的值。 
而finally则是异常处理语句块的一部分。通常在捕获异常后会执行该语句块中的内容(如果有的话)。比如可以在该语句块中来执行数据连接关闭的操作 

   

11. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?   Overload:(可以改变返回值的类型)Overloading是java多态性的不同表现,重载Overload是一个类中多态性的一种表现, 

Override:重写Overrideing是负累与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overrideing)

(百度:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。) 

 

12. error和exception有什么区别?  
Error:因为java虚拟机或系统问题而产生的错误,java程序不做任何处理,应该尽快结束java程序的处理 
Exception:因为java程序出现问题而产生的错误,可能在程序运行时产生,也可以在程序编译过程中产生  
(百度:error通常指错误,已经超出了异常的范畴,如:典型的error有内存溢出,这种错误你是无法通过通过程序来控制和更正的。而Exception则是指由于程序员的疏忽导致程序在运行时出现了非正常的状态,这种异常通常时是由于程序员的逻辑问题或者疏忽大意造成的,但是程序员同样可以通过程序代码来进行修复和改正。只要程序员认真全面的检查。程序中的异常可以被避免。两者的主要区别也就是一个可以由程序来控制修复,而error则很难修复或者不受程序员控制的错误。 

)  


13. 同步和异步有何异同,在什么情况下分别使用他们?举例说明  同步:线程安全 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值