1、异常的API结构是怎样的?Error和Exception有什么区别?
Throwable是所有异常和错误的父类。异常Exception可捕获,可处理。错误Error可捕获,不能处理。
2、异常的执行顺序怎样?如果在try块中有return,finally会执行吗?
先执行try块,如果没有异常,顺序执行。如果有异常,转向catch块执行,同时终止try块中的其余代码。无论是否有异常,都会执行finally。如果在try块中有return,finally会在return之前执行。
3、finally是否在任何时候都会执行?
不是,如果有System.exit(0),则finally不会执行。
4、throw 和throws的区别是什么?
throw是语句,表示显示抛出异常对象。throw new Exception();
throws是方法修饰符,表示该方法中可能抛出某个异常,调用方法是需要处理该方法抛出的异常。Public void test()throws Exception{}
5、异常分为几种?如何区分?列出常见的异常。
整型除0,会报ArithmetiException算术异常,但是仅限于整型,double和float类型不会报异常,会得出无穷大的结果。
异常分两种:编译期异常(检查异常)和运行期异常(非检查异常)。所有的运行期异常都是RuntimeException子类。
Java.lang.ArithmeticException 算数异常,比如整型除零操作 int = 9/0;
Java.lang.ClassCastException 类型转换异常。一般发生在类型强转时,但对象不匹配某种类型。Objcet = new JFrame(); String y = (String)x;
Java.lang.ClassNotFoundException 类未找到异常。一般发生在通过反射加载时,类的不正确。 Class c = Class.forName(“sdfs”);
Java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常。一般发生在使用数组元素时,引用了不存在下标。 int[] x =new int[3]; int[3] =9;
Java.lang.NullPointerException 空指针异常。一般发生在对null使用属性和方法时
String x = null; System.out.printlt(x.length());
Java.lang.NumberFormatException 数字转换异常。一般发生在将字符串转化为数字
String x = “abc”; int a =Integer.parseInt(x);
Java.io.FileNotFoundException 文件未找到异常。一般发生在文件操作流失,创建流时,文件路径错误。Reader r = new FileReader(“c:/1.txt”)但c盘下没有1.txt文件
Java.io.NotSerializableException 未序列化异常。一般发生在操作对象读取流时,需要传输的对象未实现serializable接口
6、如何得到当前工作目录?
String path =System.getproperty(“user.dir”);
7、String x ="abc" 和 String x =new String("abc")有什么区别?
String x = “abc”; x指向的是数据段中的字符串常量对象。
String x=new String(“abc”);x指向的是堆中的字符串对象。但是在堆中创建字符串对象之前,会先去数据段中找是否有“abc”字符串常量对象。如果有,直接复制到堆中。如果没有,则创建一个字符串常量对象,再复制到堆中。所以String x =new String(“abc”);可能会产生两个对象
8、熟练掌握字符串常见的方法。split() trim() indexOf() substring() replace() matches()
split() 按指定的正则表达式,将字符串拆分成字符串数组。
trim()去掉两头的空格
indexOf()找到指定字符串所在的下标,如果没有找到,则返回-1
substring(1,5)截取子串,包括下标为1的字符,但不包括下标为5的字符
replace() 替换字符串
mathes() 检查字符串是否匹配指定的正则表达式
9、String和StringBuffer的区别?
String 具有长度不可改变的特点。当对字符串做添加、删除、替换时,不会改变原来字符串的内容,而是创建一个新的字符串对象。一旦需要对字符串频繁操作时,效率很低。
StringBuffer 时缓冲区的对象。当对StringBuffer做添加、删除、替换时,不会产生新的对象。所以一般利用StringBuffer做字符串操作,然后通过toString()还原字符串。效率较高
10、如何将字符串转化为基本数据类型?
利用包装类 parseXX(). Int x = Integer.parseInt(“34”);
11、如何将日期对象进行"2011-12-10"格式化输出?如何将"2011-12-10"字符串转化为日期类型?
SimpleDateFormat sf =new SimpleDateFormat(“yyyy-MM-dd”);
String x =sf.format(new Date());
Date date = sf.parse(“2011-12-10”);
12、javaBean规范有哪些内容?
1、 必须提供共有的无参构造方法,方便通过反射的方式得到对象。
2、 私有属性+get/set()对属性进行访问和设置。
3、 可序列化。实现java.io.Serializable接口
13、什么是反射?
在编译时并不清楚应该加载哪个类,类的加载在运行期间进行的。这种特性叫反射。同
过反射可以对类进行加载、探知、自审。
14、如何得到Class对象?如何利用Class对象产生该类的对象?
得到Class对象有三种方式:
1、类名.class 2、对象.class 3、Class.forName(“类全路径”);
通过Class对象.newInstance()创建指定类的对象
15、线程和进程的区别?
进程和线程都是多任务处理的方式
进程是一个自包含的应用程序。进程有自己独立的内存空间,进程一开启,就会消耗内存。
线程时进程内部的一个顺序控制流。多个线程共享一个进程的内存空间,线程的开启不会另外占用内存空间。
16、创建线程有几种方式?如何启动线程?调用start()和调用run()的区别?
创建线程有两种方式:1、继承Thread类,重写run(); 2、实现Runnable接口,实现run()。推荐使用第二种。因为类只能单根继承,一旦继承了Thread类以后,就不能再继承别的类。但接口可以多实现,使用接口更为灵活。
启动线程:start()
调用start()会在主线程之外,产生一个新的子线程,多个任务同时执行。
调用run()是普通方法调用,不会产生新线程。
17、线程有几种状态?
线程有八种状态:新建、就绪、运行、死亡、休眠、等待、挂起、阻塞
18、什么是线程优先级?分为几级?
当两个或多个线程同时处于就绪状态时,优先级高的线程,会优先得到CPU的执行。优先级共分10级,数字越大优先级越高,默认为5级。
19、什么是线程同步?同步会造成什么结果?
当两个或多个线程同时访问一个对象时,为了保证对象的数据安全,同一时间只允许一个线程访问。这种方式就叫做线程同步,也叫线程安全。
同步造成结果:1、数据安全 2、效率低下
20、wait和sleep的区别?
1、 wait在Object中定义,sleep在Thread中定义
2、 wait必须放在同步方式或同步块中,表示对指定的对象进行等待。Sleep可以放在任何位子,表示当前线程休眠
3、 wait会释放对象锁,而sleep不会。
4、 wait必须要唤醒才能继续执行,sleep在休眠结束后,自动恢复运行。
21、集合的作用是什么?集合框架的API结构是怎样的?
集合的作用:用于封装、操作、传输数据。集合框架的API:Collection是父接口,有list和set两个子接口。另外还有一个map接口
22、List、Set、Map集合各自有什么特点?
List特点:线性、元素可以重复。
Set特点:元素不可重复。
Map特点:键值对,一个元素可以放两个对象。对象不能重复。
23、集合元素如何添加?如何删除?如何遍历?
添加:List、Set都是add();Map是put();
删除:remove()
遍历:1、for(int i = 0;i<list.size;i++){
Object obj =list.get(i)
}
2、Iterator it = list.iterator;
While(it.hasNext()){
Object obj = it.next();
}
3、 for(Object obj : list){
}
24、List接口实现类ArrayList、Vector、LinkedList的区别?
ArrayList底层部分由数组实现,遍历速度快,中间插入删除元素速度慢。线程不安全。
Vector:底层部分由数组实现,但线程安全。
LinkedList:是一组布连续的内存空间,采用双向链实现。中间插入元素速度快,但遍历速度慢。
25、集合如何进行排序?
Collections.sort(list, new Comparator){
Public int compare(){}
}
26、HashMap和Hashtable有什么区别?
1、 HashMap线程不安全,而Hashtable线程安全。
2、 HashMao允许空键空值,而Hashtable不允许。
27、awt和swing有什么区别?
Awt采用操作系统自身的风格来显示GUI组件,跨平台时,风格会不一致。
Swing拥有独立的显示风格,跨平台时,风格一致。
28、GUI常见布局管理器有哪些?
1、 绝对布局 null 按照组建的大小和位置定位组件
2、 边框式布局 BorderLayout 按东、西、南、北、中的方式定位组件
3、 流式布局 flowLayout 按从上到下,从左到右的方式定位组件,超出容器自动换行。
4、 网格布局 GridLayout 将容器等分为大小相等的几个部分,每部分放一个组件。
29、如何进行事件的添加?
1、 确定事件源
2、 确定监听器(监听器需要实现监听接口)
3、 注册。建立事件源和监听器的联系
30、流按照输入输出方向分有几种?相对于什么而言?
流按照输入输出的方法分为两种:输入流和输出流,相对于内存而言。当需要将数据从数据源读取到内存叫输入流,也叫读取流。当需要将内存中的数据写入到数据源,叫输出流,也叫写入流。
31、流按照传输内容分有几种?各自的父类是什么?
流按照传输内容分为:字节流、字符流、对象流。无论是哪一种流,本质都是字节流。但为了方便程序员对字符串和对象操作,在字节流基础上做了一层封装,形成了字符流和对象流。
字节流的父类:InputStream 和OutputStream
字符流的父类:Reader 和Writer
32、操作流时,如果文件不存在会出现什么情况?如果流不关闭会出现什么情况?
操作流时,如果文件不存在,读取流会抛出文件未找到异常(java.io.FileBotException)。但写入流会创建新文件。
流使用完毕如果不关闭,那么不会释放流所占用内存资源,同时写入流有可能写不进文件。
33、如何判断一个文件是否存在?如何创建一个目录?如何知道一个目录中有多少文件?
判断文件是否存在:File 对象.exists();
创建目录:File对象.mkdir();
得到目录中文件:File对象.listFiles();
34、什么是对象序列化?如何实现对象序列化?
当需要对对象进行传输时由于对象数据庞大,所以在传输前,将对象打撒成字节许留,以利于传输,这个过程叫对象序列化。到达目的地后,又需要将字节序列还原成对象,叫反序列化。
如何实现序列化:要求被传输的对象实现java.io.Serializable
35、TCP/IP协议分为几层?
TCP/IP协议分为:应用层、传输层、网络互连层、网络接口层。
36、什么是端口?常见端口有哪些?
端口是应用程序进行数据交互的通道。一个应用程序占用一个端口。
常见端口:
Tel 协议:23
Smtp 协议:25
ftp协议:21
http协议:80
37、TCP和UDP的区别是什么?掌握TCP编程流程。
TCP是一种比较安全的协议,提供三次握手,如果数据在传输中有损耗,会要求发送方重新发送,以保证数据的安全性和完整性。
UDP是一种比较不安全的协议,数据在传输有损耗,也不会要求发送方重新发送,速度较快。
38、JDBC是什么?JDBC的API为什么大都是接口?
39、JDBC开发流程是怎样的?
40、什么是XML?XML声明是怎样的?XML注释是怎样的?
XML叫做可扩展标记语言,利用标记和子标记来描述对象和对象属性。
XML声明<?xml version=”1.0” encoding=”utf-8” ?>
XML注释<!-- -->
41、一个格式良好的XML有哪些规定?
1、 必须要有声明
2、 有且只有一个根元素
3、 标记区分大小写
4、 属性要加引号
5、 标记要成对出现
6、 空标记必须要关闭<bean/>
7、 元素要正确嵌套
42、格式良好的XML和有效的XML有什么区别?
如果一个XML文件符合XML的语法规范,那么就是格式良好地XML。
有效地XML文件除了要满足XML语法规范外,还要满足DTD和Schema定义的元素规则。
43、DOM和SAX有什么区别?
DOM、SAX都是XML解析技术。
DOM特点:1、时一种树状结构
2、DOM可以对XML进行存储和读取,需要将整个文档读取到内存操作
3、可以随机的访问XML元素
4、大型文档可能造成内存紧张
SAX特点:1、基于事件模型解析,不用将整个文档读取到内存,内存消耗小。
2、不能对XML元素进行随机访问。
3、SAX只能读取不能存储
4、只能遍历一次