您的位置:首页 > 职场人生

黑马程序员--java学习总结(11)

2015-03-08 22:52 225 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

----易混淆的概念

&和&&的区别:
&:无论左边结果是什么,右边都参与运算。
&&:左边为false时,右边就不参与运算,可以提高效率。

成员变量和局部变量的区别:
1.成员变量被定于在类中,而局部变量被定义在方法中,参数上和语句中。
2.成员变量的作用域是整个类,而局部变量的作用域是所在的那对大括号,大括号结束,局部变量就失去作用域。
3.成员变量存在于堆内存中,随着对象的产生而产生,消失而消失;而局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。

成员变量和静态变量的区别:
1.成员变量所属于对象,所以也称为实例变量;而静态变量所属于类,所以也称为类变量。
2.成员变量存在于堆内存中,随着对象的产生而产生,消失而消失;而静态变量存在于方法区中,随着类的加载而存在,类的消失而消失。
3.成员变量只能被对象所调用;而静态变量可以被对象调用,也可以被类名直接调用。

构造函数和一般函数的区别:
1.两个函数的定义格式不同,一般函数在定义时需要返回值类型,而构造函数不定义返回值类型,而且函数名必须同类名一致。
2.构造函数是在对象被创建时就被调用,用于初始化,而且初始化动作只执行一次;一般函数,是对象被创建以后,需要调用才能执行,可以被执行多次。

构造函数和构造代码块的区别:
1.构造代码块是给所有对象进行初始化,也就是说,所有的对象都会调用一个构造代码块,只要对象一建立,就会调用这个代码块;构造函数是给与之对应的对象进行初始化,它具有针对性。
2.构造代码块优先于构造函数执行。其实,构造代码块是所有类中的构造函数的相同部分,将这些相同部分提取出来封装成代码块,对象会先执行构造代码块,再执行对应的构造函数。

抽象类和接口的区别:
1.抽象类只能被继承,而且只能单继承;接口需要被实现,而且可以多实现。
2.抽象类中可以定义非抽象方法,子类可以直接继承使用;接口中都是抽象方法,需要子类去具体实现。
3.抽象类使用的是is a关系;接口中使用的是like a关系。
4.抽象类的成员修饰符可以自定义;接口中的成员修饰符是固定的。而且全都是public的。

throw和throws的区别:
throw用于抛出异常对象,后面跟的是异常对象,throw用在函数内。
throws用于抛出异常类,后面跟的是异常类名,可以跟多个,用逗号隔开,throws用在函数上。

编译时被检查的异常和运行时异常的区别:
编译时被检查的异常在函数内被抛出,函数上必须要声明,否则编译失败。声明的原因是需要调用者对该异常进行处理。
运行时异常如果在函数内被抛出,在函数上不需要声明。不声明的原因是不需要调用者处理,运行时异常发生,已经无法再让程序运行,所以不让调用者处理,直接让程序停止,有调用者对代码进行修正。

进程和线程的区别:
进程:正在进行中的程序,其实就是一个应用程序运行时的内存分配空间。
线程:其实就是进程中的一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。且一个进程至少有一个线程在运行。

同步代码块和同步函数的区别:
同步代码块使用的锁可以是任意对象,相对灵活。
同步函数使用的锁是this,静态同步函数使用的锁是该类的字节码文件对象。

各种容器添加元素方法的区别:
StringBuffer和StringBuilder用的是append方法或insert(指定位置插入)方法;
Collection类型的集合容器用的是add方法;
Map类型集合容器用的是put方法;
properties容器用的是load方法;
注:数组的长度是固定的,不能增删。

StringBuffer和StringBuilder的区别:
StringBuffer线程安全,多线程操作时,用StringBuffer会提高安全性。
StringBuilder线程不安全,单线程操作时,用StringBuilder会提高效率。

集合和数组的区别:
1.数组的长度是固定的,而集合的长度是可变的;
2.数组可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型;
3.数组里面的元素必须是同一种数据类型,而集合里面的对象可以是不同数据类型;

在TreeSet集合排序中使用Comparable接口和Comparator接口的区别:
1.如果要让元素自身具备比较性,则需要元素对象实现Comparable接口,覆盖里面的CompareTo方法;
2.如果要让集合具备比较性,则需要定义一个实现了Comparator接口的比较器,并覆盖里面的compare方法,并将该类对象作为实际参数传递给TreeSet集合的构造函数;

Collection和Collections的区别:
Collections是java.util下的一个类,是针对集合类的一个工具类,提供了一系列的静态方法,实现对集合的查找、排序、替换、线程安全化(将非同步集合转换成同步集合)等操作。
Collection是java.util下的一个接口,它是各种集合结构的父接口,继承于它的接口主要有Set和List,提供了关于集合的一些操作,如插入、判断、删除、遍历等。

Collection和Map的区别:
1.Collection一次存一个元素,Map一次存一对元素;
2.Collection是单列集合,Map是双列集合;
注:Map集合中存的是键值对,必须要保证键的唯一性。

高级for循环和传统for循环的区别:
高级for循环在使用时必须要明确被遍历的目标。这个目标可以是Collection集合或者数组,如果遍历的是Collection集合,在遍历过程中还需要对元素进行操作,比如删除,则需要使用迭代器。如果遍历的是数组,还需要对数组元素进行操作,建议使用传统for循环,因为可以定义角标,通过角标操作元素。如果只为了遍历获取,可以简化成高级for循环,它的出现简化了书写。

close()和flush()的区别:
flush():将缓冲区的数据刷新到目的地后,流还可以使用。
close():将缓冲区的数据刷新到目的地后,流就关闭了,该方法用于结束调用的底层资源,所以这个动作一定要完成。

原文件会不会被覆盖的问题:
1.当用FileWrite和FileOutputStream的构造方法关联文件(会自动创建文件)时,如果参数中带的是flase或者是没有boolean的参数时,会将相同路径下原来的同名文件覆盖;如果参数是true,则只会续写(也就是从原始数据的尾部开始写)原文件,而不会覆盖。
2.File中的createNewFile()方法也不会覆盖,如果有同名文件,则不创建,如果没有,则创建。
3.其次,RandomAccessFile
raf=new RandomAccessFile("random.txt","rw");当参数为"rw"时表示:当这个文件不存在时,会创建该文件,如果文件已存在,则不会创建,也不会覆盖原文件,只是将数据写在原文件上(修改)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: