} } }

    Java常识总结--CoreJava

    添加时间:2013-7-16 点击量:

    在网上看到的关于Java的常识总结,感觉很受用,分享给大师。。。。。


    若是有什么错误,也迎接斧正批驳。


    1 简述下java根蒂根基数据类型及所占位数,java根蒂根基数据类型:4类8


    整数类型:byte(1byte),short(2byte),int(4byte),long(8byte)


    浮点类型:float(4byte),double(8byte)


    字符类型:char(2byte)


    逻辑类型:boolean(false/true 1byte)


    2 说出5个启动时异常


    RunTimeException                                                                                                


    ------NullPointerException


    ------ArrayIndexOutOfBoundsException


    ------ClassCastException


    ------NumberFormatException


    3 HashMap 和HashTable的差别:


    1HashMap 容许空键值对,HashTable不容许


    2HashMap不是线程安然的,HashTable是


    3HashMap直接实现Map接口,HashTable持续Dictionary类


    4.ArrayList,Vector,LinkedList存储机能和差别


    它们都实现了List接口


    ArrayList和Vector都是基于数组实现的


    LinkedList基于双向轮回链表(查找效力低,添加删除轻易)


    ArrayList不是线程安然的而Vector是线程安然的,所有速度上ArrayList高于Vector


    5.Collection和Collections的差别


    Collection是凑集类的上级接口,持续与他的接口首要有Set和List


    Collections是针对凑集类的一个帮助类,他供给一系列静态办法实现对各类凑集的搜     索、排序、线程安然等操纵。


    6 List、Map、Set三个接口,存取元素时,各有什么特点?


    List以特定次序来持有元素,可有反复元素。


    Set 无法持有反复元素,内部排序


    Map保存key-value值,value可多值。


    7 final,finally,finalize的差别


    Final用于声明属性,办法和类,分别默示属性不成变,办法不成覆盖,类不成持续


    Finally 是异常处理惩罚语句布局的一项目组,默示老是履行


    Finalize 是Object类的一个办法,在垃圾收集时的其他资料收受接管,例如封闭文件等。


    8 Overload和Override的差别。Overload的办法是否可以改变返回值的类型?


    办法的重写Override和重载Overload是Java多态的不合发挥解析。


    重写Overriding是父类与子类之间多态的一种发挥解析,办法名,参数列表返回值类型都得与父类的办法一向。


    重载Overloading是一种类中多态的一种发挥解析。重载的办法是可以改变返回值类型的。


    9用一句话总结一下冒泡排序


    依次斗劲相邻的两个数,将小数放在前面,大数放在后面。


    10 实现线程安然的两种体式格式


    1)synchronized办法:经由过程在办法声明参加synchronized关键字来声明synchronized办法


    2)Synchronized块:经由过程synchronized关键字来声明synchronized快


    11 说一下==和equal()办法在字符串变量操纵中的不合?


    ==斗劲的是两个字符串对象的地址,equal() 是斗劲两个字符串的具体值


    12 sleep和wait办法有什么差别


    Sleep是线程(Thread)的办法,导致此线程暂停履行指按时候,把履行机会给其他线程,然则监控状况依然对峙,到时会主动恢复。调用sleep不会开释对象锁。


    Wait是Object类的办法,对此对象调用wait办法导致本线程放弃对象锁,进入守候此对象的守候锁定池,只有针对对象发出notify办法(或notifyAll)后本线程才进入对象锁定池筹办获得对象进入运行状况。


    13 &和&&的差别


    &位运算符:非短路运算符,它会把所有前提履行完毕之后,才会返回成果


    &&逻辑运算(and):短路运算符,碰到不合适前提,立即终止法度的履行


    14 error和exception的差别


    Error:默示恢复是不成能的一种严重的题目,比如:内存溢出,不指望法度处理惩罚


    Exception 法度运行时的异常,若是法度设计公道不会呈现的景象


    15请说出你锁知道的线程同步的办法


    Wait():使一个线程处于守候状况,并且开释所有持有的对象的lock;


    Sleep():使一个正在运行的线程处于睡眠状况,是一个静态办法,调用此办法要捕获InterruptedException异常;


    Notify():唤醒一个处于守候状况的线程,重视的是在调用此办法的时辰,并不克不及确切的唤醒某一个守候状况的线程,而是由JVM断定唤醒哪个线程,并且不是按优先级。


    notityAll():唤醒所有处于守候状况的线程,重视不是给所有唤醒线程一个对象的锁,而是让它们竞争。


    16.收集编程中涉及并发办事器,应用多过程和多线程,请问有什么差别?


    1)过程:子过程是父过程的复成品子过程获得父过程数据空间堆和栈的复成品


    2)线程:相对于过程而言,线程是一个加倍接近与履行体的概念,它可以与同过程的其他过程共享数据,但拥有本身的栈空间,拥有自力的履行序列


    两者都可以进步法度的并度,进步法度运行效力和响应时候。


    线程和过程在应用上各有优毛病:线程履行开销小,但晦气于资料经管和保护;而过程正相反同时,线程合适于在SMP机械上运行,而过程则可以跨机械迁徙。


    17 什么是反射?


    在运行过程中:


    1对于随便率性一个类,可以知道这个类的属性和办法。



    2对于随便率性一个对象,可以调用这个对象的随便率性办法。


    对于这种动态获取的信息,以及动态调用对象办法的功能成为反射。


    Java反射机制供给的功能


    1运行时断定随便率性对象的所属类


    2运行机会关随便率性类的对象


    3运行时断定和调用对象的成员变量和办法


    4天活泼态


    18 线程的根蒂根基概念、线程的本状况及状况之间的关系


    新建(Born)新建的线程处于新建状况


    伏贴(Ready)在创建线程后,它将处于伏贴状况,守候start()办法被调用


    运行(Running)线程在开端履行时进入运行状况


    睡眠(Sleeping)线程的履行可经由过程sleep()办法来临时中断。在睡眠后,线程将进入伏贴状况


    守候(Waiting):若是调用了wait()办法,线程将处于守候状况。用于在两个或多个线程并发运行时。


    挂起(Suspended)在姑且停止或中断线程的履行时,线程就处于挂起状况 。


    梗阻(Blocked)在线程守候一个事务时(例如输入/输出操纵),就称处于梗阻状况


    灭亡(Dead)在run()办法已经履行或其stop()办法被调用之后,线程就处于灭亡状况


    19 描述下JVM加载class文件的道理机制


    JVM中类的装载是由ClassLoader和它的子类来实现的java ClassLoader是一个首要的java运行时体系组件。它负责在运行时查找和装入类文件的类。


    20什么是触发器和存储过程


    触发器是存储在数据库中的块,这个块一旦被机关后,就可以多次履行,当触发它的事务产生时调用该触发器。触发事务是指对表中数据的操纵,如插入、删除和批改。


    存储过程是将常用的或很错杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么今后要叫数据库供给与已定义好的存储过程的功能雷同的办事时,只需调用execute,即可主动完成号令。我的懂得就是一堆sql的凑集,可以建树很是错杂的查询,编译运行,所以运行一次后,今后再运行速度比零丁履行 SQL快很多


    21什么是回调函数


    某个法度S(Student.main)调用办事法度A(Arrays)中的某个办法(sort),办事法度A的sort办法在某个时辰反过来调用S的某个办法(compareTo),这种景象下,compare叫做S的回调办法。


    例如:public class Student implements Compareble{


    Private int id;


    Private String name;


    Private int age;


    Private int score;



    //机关器


    //getter/setter办法


    //回调办法


    Public int compareTo(Object obj){


    Return


    This.id-((Student)obj).id;


    }


    }


    Student s1 = new Student(1,a,18,89);     


    Student s2 = new Student(2,a,18,89);


    Student s3 = new Student(3,a,18,89);


    Student [] arrs = {s1,s2,s3};


    Arrays.sort(arrs);


    22 遍历文件夹下所有.java的文件?


    Public void listFiles(String path){


    File dir = new File(path);


    Files []  files = dir.listFiles(new FileFilter(){


    Public boolean accept(File f){


    Return f.getName().endWith(.java);


    }



    });


    For(File file:files){


    System.out.print(file.getName());


    }



    }

    容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永
    分享到: