基础知识题三

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值