1.jdk与jre的区别?
答:JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。。。
JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH。
2.方法的重载和方法的覆盖有什么不同?
答:方法重载,指的是在类中创建多个具有相同名称,但使用不同参数的方法,Java虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。方法的覆盖指在子类中重新定义父类中已有的方法,对于重写的方法,运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。
3.简述Java中的String,StringBulider,StringBuffe三者的区别?
答:(1)首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String
(2) 再来说线程安全
在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
4.简述类的可见性并描述其区别?
总结:public 都可以,protected在子类或同包,default 同包,private只可以在同一个类中。
5.abstract class和interface有什么区别?
.答:从本质上讲,接口是一种特殊的抽象类,然而它们又有区别:
①接口只包含常量,而抽象类则不一定。
②接口中不能有非抽象的方法,但抽象类中可以有。
③一个类能实现多个接口,但只能有一个父类。
④接口并不属于继承结构,它实际与继承无关,无关的类可以实现同一个接口。
6.简述逻辑操作(&,|)与条件操作(&&,||)的区别?
区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔
型,而且可以操作数值型
b.逻辑操作不会产生短路
7.开发与运行Java程序需要经过的三个主要步骤为:编译源程序,编译生成字节码,解释运行字节码
8.在Java的基本数据类型中,char型采用Unicodea编码方案,每个Unicode码占 2 个字节内存空间,无论是中文字符还是英文字符,都占用 2 个字节内存空间。
9.抽象类(abstract)方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类中定义。最终(final)方法是不能被当前类的子类重新定义的方法。
10.Java中Exception和Error有什么区别,并且throw和throws有什么区别?
答:Exception和 Error 都是 Throwable 的子类。Exception用于用户程序可以捕获的异常情况。Error 定义了不期望被用户程序捕获的异常。throw 关键字用来在程序中明确的抛出异常,相反,throws 语句用来表明方法不能处理的异 常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发 生的异常,多个异常是用逗号分隔的。
11.进程和线程的区别是什么概括的解释下线程的几种状态?
答:进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。 线程又叫做轻量级进程。
线程在执行过程中,可以处于下面几种状态:
就绪(Runnable):线程准备运行,不一定立马就能开始执行。
运行中(Running):进程正在执行线程的代码。
等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
睡眠中(Sleeping):线程被强制睡眠。
I/O 阻塞(Blocked on I/O):等待 I/O 操作完成。
同步阻塞(Blocked on Synchronization):等待获取锁。
死亡(Dead):线程完成了执行。
12.HashMap和Hashtable有什么区别?
答:HashMap 和 Hashtable 都实现了 Map 接口,因此很多特性非常相似。但是,他们有以下不同 点: HashMap 允许键和值是 null,而 Hashtable 不允许键或者值是 null。 Hashtable 是同步的,而 HashMap 不是。因此,HashMap 更适合于单线程环境,而 Hashtable 适合于多线程环境。 HashMap 提供了可供应用迭代的键的集合,因此,HashMap 是快速失败的。另一方面, Hashtable 提供了对键的列举(Enumeration)。 一般认为 Hashtable 是一个遗留的类。
13.Java支持的书类型有哪些(基本数据类型)?什么是自动拆装箱?
答:Java 语言支持的 8 中基本数据类型是:
byte short int long float double boolean char 自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如: 把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。
14.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?
答:Array 可以包含基本类型和对象类型,ArrayList 只能包含对象类型。 Array 大小是固定的,ArrayList 的大小是动态变化的。 ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数 据类型的时候,这种方式相对比较慢。
15.什么是JDBC?Class.forName()方法有什么用?PreparedStatement比Statement有什么优势?
答:JDBC 是允许用户在不同数据库之间做选择的一个抽象层。JDBC 允许开发者用 JAVA 写数据库 应用程序,而不需要关心底层特定数据库的细节。 这个方法用来载入跟数据库建立连接的驱动。PreparedStatements 是预编译的,因此,性能会更好。同时,不同的查询参数值, PreparedStatement 可以重用。
16.请至少写出六个Object基类中的方法?
getClass();wait();notify();notifyAll();hashCode();toString();equals()