1、异常分为几种?如何区分?
答:检查时异常和运行时异常。运行时异常都是RunTimeException 的子类
2、如何得到当前工作目录?
答:System.getProperty(“user.dir”);
3、String x ="abc" 和 String x =new String("abc")有什么区别?
答: 前者只有一个对象,在数据段里的常量池中。后者需要在常量池中查询是否拥有这个字符串常量,如果有只创建一个对象,没有则创建2个对象。
4、String和StringBuffer的区别?
答:String产生的对象值是不能更改的,每次变化都是重新产生了一个对象。而StringBuffer产生的对象的值是可以改变的。StringBuffer是缓冲区对象,当对这个对象进行操作的时候,不会产生新对象,所以效率高。StringBuilder是线程不安全的,效率最高。
5、如何将字符串转化为基本数据类型?
答:用包装类中静态方法 包装类.parse基本数据类型(字符串)。如Integer.parseInt(“10000”);
6、如何将日期对象进行"2011-12-10"格式化输出?如何将"2011-12-10"字符串转化为日期类型?
答:使用SimpleDateFormattest=new SimpleDateFormat(“yyyy-MM-dd”) 定制格式。然后用
Test.format(date类对象) 返回一个字符串然后输入该字符串
Date.valueOf("2011-12-10");sql的date类,如果是util包的date 则是需要
Date test= new SimpleDateFormat(“yyyy-MM-dd”).parse(“2011-12-10”)
7、javaBean规范有哪些内容?
答:JAVA标准类:
1. 必须要有个1公共无参构造(写了带参构造必须添加一个,都不写则有默认)
2. Javabean类不应有公共属性,属性都应该是 private
3. 为私有(private声明)属性提供符合命名规范的get/set方法
4. 应该要实现serializeable接口
5. javaBean类必须是一个公共类,将其访问属性设置为public
8、什么是反射?
答:是指在运行状态,对于任意一个类,都能够知道这个类所有的属性和方法,对于任意一个对象,都可以调用他任意的一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能成为java语音的反射机制。
9、如何得到Class对象?如何利用Class对象产生该类的对象?
答:得到class对象: 1. 利用实例获得 Class对象 如 Class a=实例.getClass();
2.利用类名获得 Class 对象 如 Class a = 类名.class ; jdk1.5以前包装类是用 包装类名,TYPE的方式获得 如 Integer.TYPE
3.用forname方式获得 如 Class a=Class.forName(类的限定名);
如何产生对象: 1. 用Class对象的newInstance 方法产生一个对象,该方法只能产生带无参构造器的类的对象
2. 用Class对象 获取一个构造对象,并使用 该对象的newInstance方法产生对象,可以产生带参构造器的类的对象如 Class test=Class.forName(类的限定名);
Object a=test.getConstructor(null).newInstance();
需要注意的是,除非使用setAcccessable方法 否则,无法通过private修饰构造器产生对象
10、线程和进程的区别?
答:1.进程是指一种自包容的的运行程序,有自己的地址空间,线程是进程内部的单一顺序流。
2.进程间调用涉及的开销比线程间通讯多。
3.线程间的切换成本比进程低
11、创建线程有几种方式?如何启动线程?调用start()和调用run()的区别?
答:2种。一个是继承Thread类,一个是实现Runnable 接口。 前者直接调用父类的 start方法。 后者需要产生一个Thread对象关联runnable的实现类,并调用Thread对象的start方法。 Start方法是在主线程之外开启一个新的子线程,而run()方法就是单纯的调用该方法
12、线程有几种状态?
答:5种, 创建:创建一个新的线程对象
就绪:调用start()方法之后执行run()方法之前
运行:执行run()方法
中断:1.由于优先级的关系,线程没有抢到CPU 而没有被执行
2.使用sleep()方法造成了休眠。恢复后也不是立即执行,而是重新参与CPU竞争
3.由于等待I/O事件而被阻塞
4.使用wait()方法是线程进入等待
5.挂起 yield()方法
死亡:run()执行完毕
13、什么是线程优先级?分为几级?
答: 优先级是为了在多线程的环境中,便于系统对线程的调度,优先级高的线程将被优先执行(但不是绝对)。
当两个或两个以上的线程,同时处于就绪状态,那么优先级高的线程将被优先执行。10级。
14、什么是线程同步?同步会造成什么结果?
答:两个或两个以上的线程同一时间访问同一个资源时,该资源只能被一个线程占用。
同步会造成死锁,死锁是指当2个线程访问一对相互依赖的资源对象。
死锁的解决是用wait() 和notify()方法来解决
同步:1一个是数据安全,2 效率低下
15、wait和sleep的区别?
答:1.wait定义在Object方法中,sleep定义在线程中
2.wait 会让该线程进入等待状态,并释放同步锁,通过notify唤醒后参与到CPU竞争。Sleep会让线程进入休眠状态,不能释放同步锁
3 wait必须写在同步快中,Sleep则是可以放在任意地方,。
4wait并不需要捕获异常。Sleep需要捕获异常
16、集合的作用是什么?集合框架的API结构是怎样的?
答:数据的封装,检索,操作和传输对象
集合框架包括 接口:包括Collection 和Map
实现类: ArrayList,Vector,LinkedList
HashSet TreeSet
HashMap Hashtable
和算法 Collections Comparator和Comparable
Collection---List 和set 是他的子类
Map
17、List、Set、Map集合各自有什么特点?
答: List: 是一种线性集合。指的是存放在这种集合里的元素是有顺序的,这个顺序指的是可以通过前一个元素找到下一个元素,只有List是线性有序。元素可以重复,2个元素可以指向同一个对象。
Set: 不能重复 ,使用自己内部的排序机制,Set集合的不重复是通过对象的equals()方法和hashcode()方法来判断:
equals()返回true,hashCode返回的值要和它相同
1 严格意义上一旦重写了equals()方法,同时也要重写hashcode()方法
2 equals()返回true,hashCode返回的值要和它相同
3 equals()返回false,hashCode返回的值不要求一定相同(最好不同)
Map:键值对,Map一个元素有2个对象,并且键的对象值是不能重复的。
18、集合元素如何添加?如何删除?如何遍历?
答:List类 和Set 类是add()方法添加,remove()方法删除。遍历:只有list可以使用普通for循环,但都可以使用迭代器或foreach循环 如
Iterator it=list.iterator();
While(it.hasNext()){
It.next();
}
Map集合用put()方法添加 remove(),方法删除,遍历是 Keyset()得到key值的Set集合,在用set的遍历方式中使用 get(key)方法去遍历Map集合,或者用Values()方法获得所有的值的集合。再用foreach或迭代器进行遍历。
19、List接口实现类ArrayList、Vector、LinkedList的区别?HashMap和Hashtable区别?
答:ArrayList 底层数据结构是数组,线程不安全,Vector和ArrayList一样,但是是线程安全。
LinkedList底层数据结构是双向链表。
HashMap 线程是不安全的,可以存放空值,空键值(空键值只能有一个)
Hashtable是线程安全,不能存放空值,空键值
20、集合如何进行排序?
答: 1.实现java.util.comparable 接口 内部比较器,类需要实现该接口的compareTo(<E> t)方法,如果传入的参数在这个对象之后,那么返回-1 在之前则返回一个正数,相等则返回0
2.实现 java.lang.Comparator接口 外部比较器 不需要更改对象,通过一个外部的类实现该接口用来为2个对象排序。
21、awt和swing有什么区别?
答:AWT abstractwindow toolkit 是抽象窗口工具包,提供了一套与本地图形界面进行交互的接口。AWT是Swing的父类,由于使用系统本身的图形界面,会导致跨平台的时候风格不一致。
Swing则是在AWT的基础上构建的一套新的图形界面系统,他提供了AWT 所能提供的所有功能,并且用纯粹的JAVA代码对AWT的功能进行了大幅度的扩充。Swing 有自己的界面,并不依赖于系统,在跨平台时不会产生变化
22、GUI常见布局管理器有哪些?
答:流布局:组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满后到下一行继续排列。Jpane默认是流布局
边界布局:容器划分东西南北中五个区域,南北贯通,中间最大,默认加入组件的情况下也是放入中间,中间会占用其他未放置组件的方向,而其他方向无法占用中间。在JFrame中,默认就是边界布局。
卡牌布局:能让多个组件共享一个显示空间,共享空间的组件之间的关系就像一叠牌组件叠在一起。默认显示第一个添加的组件。
网格布局:按行列的方式在界面上划分空间,每个空间等大,如果划分的空间不够,优先保证行不变,增加列
23、如何进行事件的添加?
答: java在GUI处理事件是使用委托事件模型,需要有事件源对象,监听器对象和触发对象。
方法一:单独写一个监听器类,实现见提前接口,重写抽象方法。可以为不同的事件源使用同一个监听器类,也可以为每个事件源书写单独的监听器类。如果要操作窗体上的其他元素,必须要传参。
好处:1 代码独立,任务清晰 2 使用灵活,既可以为不同的事件源书写同一个监听器,也可以书写各自的。
坏处:1 类的数量增加了,维护量也增加了 2 如果要操作费时间元的容器或组件,必须要传参
方法二:让容器充当监听器,实现监听器接口,重写监听方法。
好处:操作本容器的子容器或组件,不需要传参
坏处:1 类的任务不明确 2 无法为不同的事件源书写格子的监听方法
方法三:使用匿名内部类,在绑定的时候同时实现接口的重写。
好处:1 访问本容器的自容器或组件,不传参 2 可以为每个事件源书写各自的监听器
3 类的功能各自独立
坏处: 初学者代码比较晦涩难懂
24、流按照输入输出方向分有几种?相对于什么而言?
答:输入流和输出流。相对于内存而言。
25、流按照传输内容分有几种?各自的父类是什么?
答:文件流,字节数组流,管道流,过滤流类,对象流,序列流
其父类因传输大小如下:
字符流的父类是java.io.Reader和 java.io.Writer
字节流的父类是java.io.InputStream和java.io.OutStream
26、操作流时,如果文件不存在会出现什么情况?如果流不关闭会出现什么情况?
答:读取的时候,文件不存在会抛出FileNotFoundException异常,输出的时候,文件不存在会自动写出该文件。如果流不关闭会导致该资源一直被占用,如果再来一个请求会抛出异常,有可能会导致写入的时候写不进数据。
27、如何判断一个文件是否存在?如何创建一个目录?如何知道一个目录中有多少文件?
答:用 exists()方法来判断是否纯在 使用mkdirs()方法,需要注意的是中文目录不一定能创建 使用listFiles()方法(会得到所有文件包括文件夹)
28、什么是对象序列化?如何实现对象序列化?
答:需要对对象传输的时候,因为对象较大,无法直接传输,所以将对象变成二进制数据,将对象以二进制的方式输出。
反序列化:将输入的一个二进制流转换为一个对象
实现Serializable接口(标记接口)
29、TCP/IP协议分为几层?
答:协议是指双方定制的共同表达方式。
4层:应用层(应用层,表示层,会话层), 传输层,网络层,网络接口层(数据链路层,物理层)
30、什么是端口?常见端口有哪些?
答:端口包括逻辑端口和物理端口。物理端口是指物理存在的端口,如交换机上的端口,而逻辑端口则是逻辑意义上用于区分服务的端口,端口号范围从0到65535.
一般是指一个业务程序输入输出数据的通道
常见的端口:有 FTP的21端口 HTTP的80端口 Telnet端口 23 数据库的3306
HTTPS 443 SMTP 25 POP3 110 TOMCAT 8080