Java专业准备Word文档下载推荐.docx

上传人:b****3 文档编号:16650767 上传时间:2022-11-25 格式:DOCX 页数:23 大小:56.89KB
下载 相关 举报
Java专业准备Word文档下载推荐.docx_第1页
第1页 / 共23页
Java专业准备Word文档下载推荐.docx_第2页
第2页 / 共23页
Java专业准备Word文档下载推荐.docx_第3页
第3页 / 共23页
Java专业准备Word文档下载推荐.docx_第4页
第4页 / 共23页
Java专业准备Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Java专业准备Word文档下载推荐.docx

《Java专业准备Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java专业准备Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

Java专业准备Word文档下载推荐.docx

(值得注意的是:

静态方法不能重写,构造器不能重写,final修饰的方法不能重写。

重载:

在一个类中,定义了多个同名了方法,它们具有不同的方法签名,则称为方法的重载。

这里需要注意:

重载不仅可以出现在同一类中,也可以出现在父子类中,构造器可以被重载。

3、构造器不可以被继承,不可以被重写,但可以被重载。

4、关键字final、static、abstract

final:

修饰词,用于声明属性(基本类型变量和引用类型变量的区别)、方法和类。

修饰属性,该属性在声明时给定初值并且在使用过程中不被改变;

声明方法,方法只能被使用,不能被重写覆盖;

声明类,类不能被继承;

内部类调用的成员变量必须是final修饰的。

{final、finally、finalize的区别:

finally:

是异常处理代码块的一部分,finally块用来执行任何清除操作。

如果抛出异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块,并且总会执行。

finalize:

是Object类得一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收。

JVM不保证此方法被调用。

}

static:

静态的,可以修饰属性、方法、代码块。

i.属性:

静态属性,全类共有,常叫做类变量,和具体对象无关,类加载的时候被初始化。

ii.方法,静态方法。

@静态方法中只能访问静态成员(包括静态属性和静态方法)。

非静态方法可以访问静态方法的属性和成员。

工具类中的对象都是static修饰的。

@静态方法不能被非静态方法覆盖。

@静态方法不需要实例就可以调用。

iii.代码块:

初始化代码块是在类中而不是其他任何地方的代码块。

静态初始化代码块在类加载的时候运行一次。

abstract:

abstract修饰的class是抽象类。

1)抽象类不能创建实例对象。

2)抽象类中的方法不一定是抽象方法。

3)可有构造器

4)集体类继承抽象类时,必须实现所有的抽象方法

5)抽象类中可以有静态方法,可以返回其子类的实例

为什么要使用抽象类:

大部分情况下,抽象类是从大多数对象中抽象出来的属性和方法,是为了方便代码的复用。

抽象类的存在就是为了继承。

父类能够出现的地方,子类一定可以出现。

3.Inteface接口:

接口可以说成是抽象类得一种特例,是比抽象类更抽象的抽象类。

接口中的所有方法都是抽象方法,并且默认为publicabstract类型,接口中的成员变量类型默认是publicstaticfinal.

1)接口中不能有构造方法

2)接口中没有普通成员变量,都是被publicstaticfinal修饰的常量

3)接口中所有方法都是抽象的

4)一个类可以实现多个接口,但是只能继承一个抽象类

5)接口可以解决类型转换的问题

为什么要用接口:

1)可插拔性的保证,可以随意更换接口的实现类

2)接口可以解决多继承问题,Java的单继承是接口产生的根本原因

一个类可以转化成多种类型,继承永远是一种类型

5、接口是否可继承接口?

抽象类是否可实现(implements)接口?

抽象类是否可继承具体类(concreteclass)?

抽象类中是否可以有静态的main方法?

接口可以继承接口。

抽象类可以实现接口。

抽象类可以继承具体类。

抽象内中可以有静态的main方法。

6、垃圾回收

GC是垃圾收集的意思(GabageCollection),Java提供的GC功能可以自动监测对象是否超过作用域从而自动回收内存的目的,Java语言没有提供释放已分配的内存的显示操作方法。

Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。

要请求垃圾收集,可以调用System.gc(),但该方法不推荐使用,可以将不用的对象Object置成null,可以加快资源的释放。

垃圾收集器将检查并释放不再使用的内存,GC提高了代码的安全性,是一个独立的线程,不受程序员的精确控制。

垃圾回收器的基本原理是什么?

垃圾回收器可以马上回收内存吗?

有什么办法主动通知虚拟机进行垃圾回收。

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。

通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。

通过这种方式确定哪些对象是“可达的”,哪些对象是“不可达的”,当GC确定某些对象是“不可达”时,GC就有责任回收内存空间。

程序员可以手动执行System.gc(),通过GC运行,但是Java语言规范并不保证GC一定会执行。

垃圾回收的优点和原理。

并考虑2中回收机制。

Java语言的一个显著特点就是引人了垃圾回收机制。

它使得Java程序员在编写程序的时候不再考虑内存管理。

有了垃圾回收机制后,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。

垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡或者长期没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制又分:

复制垃圾回收和标志垃圾回收、增量垃圾回收。

7、“==”和“equals”的区别

“==”:

1)如果比较的是两个基本类型(char、byte、short、int、long、float、double、boolean),则是判断他们的值是否相等;

2)如果比较的是两个对象,比较的是对象的地址是否相等

“eauals”:

如果没有重写父类中的equals方法,它与==等价,

如果重写了父类中的equals方法,比较的对象的内容是否相等

stringclass的equals()已经被系统override了

8、Integer和int的区别:

1)int是java提供的8种原始数据类型之一。

Java为每个原始类型提供了封装类型,Integer是为int提供的封装类。

2)int的默认值是0,而Integer的默认值是null,即Integer可以区分出位赋值和值为0的区别,int则无法表示出未赋值的情况。

在JSP开始中,用el表达式在文本框中显示,Integer的值为空字符串,而int的值为0;

所以int不适合作为web层的表单数据的类型。

在hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为int类型,还需要在hbm.xml中设置hbm映射文件中设置其unsaved-value的属性值为0.

hibernate的对象标识符(OID)可以用<

id>

元素来设定OID,OID可以定义为short、int、long类型,默认情况下,hibernate生成持久类时,会将OID定义为Java包装类型。

用<

元素中的<

generator>

子元素来设定标识符生成器。

例如:

 

<

idtype=”long”column=”ID”>

generator/>

/id>

3)Integer提供了与int相关的操作方法,比如,将一个字符串转换为整数,Integer中定义了整数的最大值和最小值的常量;

9、collection和collections的区别

Collection是java.util包下的接口,是集合类的上级接口,继承它的接口主要有set和list。

Collections是java.util包下的实现类,是针对集合类得一个帮助类,它提供了一系列静态方法客观实现对各种集合的搜索、排序、线程安全化等操作。

10、List的三个实现类

List是java.util包下的接口,按放入顺序排列,可重复。

有三个实现类,分别是Vector、Arraylist、LinkedList.

ArrayList:

add()、delete()、indesxOf()、remove()、clear()、set()、get()、isEmpty()、size()

底层数组实现,插入、删除的效率低、查询的效率高(下标),

ArrayList是线程不安全的。

Vector:

在用法上和ArrayList几乎完全一样,与ArrayList不同的是当需要增长时,Vector默认增长为原来的一倍,ArrayList默认增长为原来的一半。

Vector是线程安全的(java1.2之前)

{请输出ArrayList、Vector、LinkedList的存储性能和特性。

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据,以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及到数组元素的移动等内存操作,所以索引数据快而插入数据慢。

Vector由于使用了Synchronized方法,通常性能上较ArrayList差,而LinkedList使用的双向链表实现存储,按照索引数据需要进行向前和向后遍历,但是插入数据时,只需要记录本项的前后项即可,所以插入速度快。

LinkedList:

底层是一种双向循环链表(双向循环链表的查询效率低,但是增删改效率高,所以LinkedList一般用在删除比较频繁的场合)。

add()、addFirst()、addLast()、clear()、get()、remove()、listIterator()、remove()、toArray()

11、String、StringBuffer、StringBuilder的区别;

String类提供了数值不可改变的字符串,而StringBuffer提供的字符串可以进行修改。

典型的,我们可以使用StringBuffer来动态地构造字符数据。

如果要对字符串内容进行频繁的操作,特别是内容要修改的时候,使用StringBuffer,如果最后需要的是String,那么使用StringBuffer的toString()方法,并且它是线程安全的。

另外String实现了equals()方法,而StringBuffer没有实现equals()方法。

StringBuilder是JDK5.0开始提供的类,为StringBuffer类补充了一个单线程使用等价类;

通常应该是优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

12、hashcode(),equals()重写的规则

相同的对象必须有相同的散列码。

equals()相等的两个对象,hashcode()一定相等。

hashcode()相等的两个对象,equals()不一定相等。

在java的集合中,判断两个对象是否相等的规则是:

首先,判断两个对象的hashCode是否相等,如果不相等,认为两个对象也不相等,如果相等,则判断两个对象用equals运算是否相等,如果不相等,认为两个对象也不相等,如果相等,认为两个对象相等。

Java语言对equals()的要求如下,这些要求是必须遵循的:

对称性:

如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”

反射性:

x.equals(x)必须返回是“true”

类推性:

如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”

一致性:

如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true”

任何情况下,x.equals(null),永远返回是“false”;

x.equals(和x不同类型的对象)永远返回是“false”

以上这五点是重写equals()方法时,必须遵守的准则,如果违反会出现意想不到的结果,请大家一定要遵守。

13、克隆(clone):

clone有缺省行为,super.clone();

因为首先要把父类中的成员复制到位,然后才是复制自己的成员。

浅克隆:

clone()默认的是浅克隆。

被复制对象的所有变量都含有与原来的对象相同的值

所有的对其他对象的引用仍然指向原来的对象

(浅克隆仅仅复制所考虑的对象,不复制它的引用对象)

深克隆:

被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量,那些引用其对象的变量将指向被复制过的新的对象,而不再是原有的那些被引用的对象(深克隆,把要复制的对象的引用的对象都复制了一遍)

深克隆的实现1)重写clone()方法,认为地添加对引用对象的复制;

2)使用串行化然后反串行化的方法来实现深克隆。

这个方法的要求是对象必须实现Serializable接口。

14、IO流

字节流:

以Stream结尾的流,继承自InputStream、OutputStream(抽象类)

字符流:

以Writer和Reader结尾的流,继承自Writer和Reader(抽象类)

从字符流到字节流之间的桥梁:

InputStreamReader、OutputStreamWriter

带缓冲区的流,提高效率:

BufferedInputStream、BufferedOutputStream

BufferedReader、BufferedWriter:

提供了ReadLine()方法

PrintStream提供了println()方法

15、什么是java的序列化,如何实现java的序列化

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。

可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。

序列化是为了解决在对对象流进行读写操作时所引发的问题;

序列化的实现:

将需要被序列化的类实现Serializable接口,该接口没有需实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流来构造一个ObjectOutputStream对象,接着使用ObjectOutputStream对象的writerObject(Objectobj)方法就可以将参数为obj的对象写出,要恢复的话就使用输入流。

16、说说&

和&

&

的区别

都可以用作逻辑与运算符,表示逻辑与,当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则只要有一方为false,则结果为false。

还具有短路的功能,即如果第一个表达式为false,则不在计算第二个表达式。

还可以用作位运算符,当&

操作符两边的表达式不是boolean类型时,&

表示位运算符。

通常使用ox0f来与一个整数进行&

运算,来获取该整数的最低4个bit位。

17、简述逻辑操作(&

|,^)与条件操作(&

||)的区别?

主要有两点区别:

a、条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型;

b、逻辑操作不会产生短路。

18、java中异常处理

1)error和exception有什么区别?

error表示恢复不是不可能但是很困难的情况下的一种严重的问题。

比如内存溢出。

不可能指望程序能够处理这样的情况。

Exeception表示一种设计和实现的问题,也就是说,它表示如果程序运行正常,从不会发生的情况。

而异常又分为:

检查异常和非检查异常。

a)检查异常,表示程序必须处理,不然编译通不过。

b)非检查异常,表示程序可以通过,但是可能会在运行时才抛出异常。

2)运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到得异常,是一种常见的运行时异常。

Java编译器要求方法必须声明抛出可能发生的运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

3)Java中的异常处理机制的简单原理和应用。

异常是指java程序运行时所发生的非正常情况或者错误。

Java使用面向对象的方式来处理异常,它把程序中发生的每个异常都分别封装到一个对象来表示,该对象中包含了异常的信息。

Java对异常进行了分类,不同类型的异常分别用不同的java类表示,所有异常的根类java.lang.Throwable,Throwable下面又派生了两个子类:

Error和Exception,Error一般指系统级别的错误,表示应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,内存溢出。

Exception表示程序还能克服和恢复的问题,其中又分为系统异常和普通异常,

{

系统异常是软件本身的缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复的这种问题,但是这种问题下还可以让软件系统继续运行或者然软件死掉,

例如,数组脚本越界(ArrayIndexOutOfBoundsException)

空指针异常(NullPointException)

类转换异常(ClassCastException)

普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线、硬盘空间不够,发生这样的异常程序不应该死掉。

Java为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try…catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理,所以编译器不会强制用tyr…catch处理或用throws声明,所以系统异常也称为unchecked异常。

4)请写出你最常见到的5个runtimeexception。

NumberFormatException

ArrayIndexOutOfBoundsException

NullPointException

ClassCastException

StringIndexOutOfBoundsException

ArithmeticException(当出现异常的运算条件)/ə'

riθmətik/

5)try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会执行,声明时候执行,在return还是在之后?

会被执行,在return之前执行。

6)java语言中如何进行异常处理,关键字:

throws,throw,try,catch,finally分别代表声明意义?

在try块中可以抛出异常吗?

在java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。

当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,待用这个对象的方法可以捕获这个异常并进行处理。

Java的异常处理是通过5个关键词来实现的:

throws,throw,try,catch,finally。

一般情况下用try来执行一段程序,如果出现异常,系统会抛出throws一个异常,这个时间你可以通过它的类型来捕获catch它,或最后finally由缺省处理器来处理;

try用来指定一块预防所有“异常”的程序

catch子句紧跟在try块后面,用来指定你想要捕获的“异常”的类型;

throw语句用来明确地抛出一个“异常”;

throws用来标明一个成员函数可能抛出的各种“异常”;

finally为确保一段代码不管发生什么“异常”都被执行一段代码。

19、Hashmap和Hashtable的区别?

二者都实现了Map接口,HashMap是Hashtable的轻量级实现,它们的区别:

①Hashtable继承自陈旧的Dictionary类,HashMap是Java1.2引进的Map接口的一个实现,HashMap中把Hashtable中的contains方法去掉了,改成了containsValue和containsKey

②HashMap是非线程安全的,Hashtable是线程安全的,如果只有一个线程访问集合,使用HashMap效率更高

③HashMap允许空键值对

20、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?

是用==还是equals()?

它们有何区别?

Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。

equals()和==方法决定引用值是否指向同一个对象,equals()在类中被铺盖,为的是当两个分离的对象内容和类型相配的话,返回真值。

21、什么是内部类?

都有哪些?

内部类是定义在另外一个类的内部的类,最大的好处就是可以使用外部类的私有属性,是接口的一种简易实现

①成员内部类

直接定义在类体{}中,可以使用外部类的所有属性

OuterClassoc=newOuterClass();

InnerClassic=oc.newInnerClass();

②静态内部类

直接定义在类体{}中,用static修饰,只能使用外部类的static属性

OuterClass.InnerClassic=newOuterClass.InnerClass();

③局部内部类

定义在方法中的类,可以使用外部类的所有属性和用final修饰的方法里的局部变量

publicvoidtest(){

classLocalClass{}

}

④匿名内

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1