java笔试题(1)

1、如何将数字转换为字符?
方法一:直接强制转换。如:char ch = (char)123;
2、如何去小数点前两位,并四舍五入?
1.DecimalFormat df = new DecimalFormat("#.00");
        System.out.println(df.format(m));
2.System.out.println(Math.round(m));

3、如何取得年月日,小时分秒?
//得到long类型当前时间
long l = System.currentTimeMillis();
//new日期对象
Date date = new Date(l);
//转换提日期输出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dateFormat.format(date));
/*
Calendar cal = Calendar.getInstance();
cal.setTime(new Date())
Int year = cal.get(Calendar.YEAR);
Int month = cal.get(Calendar.MONTH)+1;
Int date = cal.get(Calendar.DATE);
Int hour=cal.get(Calendar.HOUR);
Int minute=cal.get(Calendar.MINUTE);
Int second=cal.get(Calendar.SECOND);
*/
4、如何取得从1970年到现在的毫秒数?
    New Date().getTime;

5、如何获取当月的最后一天?
//获取当前月最后一天
        Calendar ca = Calendar.getInstance();    
		ca.set(Calendar.DAY_OF_MONTH, 						ca.getActualMaximum(Calendar.DAY_OF_MONTH));  
        String last = format.format(ca.getTime());
/*
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE,1);
cal.roll(Calendar.DATE,-I);
Int maxday = cal.get(Calendar.DATE);
*/
        
6、如何格式化日期?
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd");
	Date date=new Date();
	System.out.print(dateFormater.format(date));

7、编码转换,怎样实现将GB2312编码的字符串转化为ISO-8859-1编码的字符串?
String s1 = "你好";
String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");

8、String s = new String(“xyz”);创建了几个String Object?
两个
如果不区分栈和堆,这里创建了1个String Object。如果是从jvm角度来说的话,它是	创建了两个对象,String s是在栈里创建了一个变量,new String("xyz")是在堆里创建了	一个对象并被s引用到

9、float型float f = 3.4是否正确?
错的,3.4后面要加f
10、说出一些常用的类,包,接口,请各举五个。
类:1.java.lang.Object
		2.java.lang.String
		3.java.lang.System
		4.java.io.file
		5.java.io.FileInputStream
包:1.java.lang包
		2.java.io包
		3.java.swt包
		4.java.util包
		5.java.sql包
接口:1.java.util.List<E>
		  2.java.util.Map<E>
	      3.java.util.Iterator<E>
		  4.java.sql.CallableStatement
		  5.java.lang.Comparable<T>

11、简单举例java中会存在的内存泄露?
内存泄露:不再会被使用的对象的内存不能被回收,就是内存泄露。

12、java中实现多态的机制是什么?
方法的重写Overriding和重载Overloading是Java多态性的不同表现.
重写Overriding是父类与子类之间多态性的一种表现
重载Overloading是一个类中多态性的一种表现.
静态的多态:
动态的多态:
13、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
答:Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,在使用JAVA的时候,一般不需要专门编写内存回收和垃圾清理代 码。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。

电脑的内存大小的不变的,当我们使用对象的时候,如使用New关键字的时候,就会在内存中生产一个对象,但是我们在使用JAVA开发的时候,当一个对象使用完毕之后我们并没有手动的释放那个对象所占用的内存,就这样在使用程序的过程中,对象越来越多,当内存存放不了这么多对象的时候,电脑就会崩溃了,JAVA为了解决这个问题就推出了这个自动清除无用对象的功能,或者叫机制,这就是GC,有个好听是名字叫垃圾回收,其实就在用来帮你擦屁股的,好让你安心写代码,不用管内存释放,对象清理的事情了。

14、静态变量和实例变量的区别?
静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。
	实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。

15、是否可以从一个static方法内部发出对非ststic方法的调用?
不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在	该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是	说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方	法中发出对非static方法的调用,那个非static	方法是关联	到哪个对象上的呢?	这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。

16、写clone()方法时,通常有一行代码”super.clone();”,他的作用是什么?
他负责产生正确大小的空间,并逐位复制
17、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?
catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;
throw语句用来明确地抛出一个异常;
throws用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟);
finally为确保一段代码不管发生什么异常状况都要被执行;
可以,throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw	语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代	码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中	指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。可见,	throw可以主动抛出异常,也就是可以在try中抛出异常。


18、String and StringBuffer的区别?
略!

19、集合的作用是什么?
存储对象用的,例如:你要打印出10点访问你服务器所有人的ip用户名密码等信息那	么用户肯定是一个对象你就要定义一个集合每当有一个访问你就把这个对象放在你的	集合里面当过了10点之后遍历这个集合取出来就行了集合的数据放在内存中。说白了	他就是用来存储临时数据的。

20、集合的通用方法有哪些?通用方法是什么?(操作)
map集合,对象以键值对的形式存放在集合中,并且键它是不允许重复的。常用的实现	是HashMap和TreeMap,HashMap能够快速的查询到一个键,而TreeMap则是对键按序	存放的。
	list接口是对collection的扩充,它允许存放相同的元素。常用的有2种实现类,ArrayList	和LinkedList。ArraryList是一种以数组形式存放元素的集合,更适合于做查询,而	LinkedList内部实现链表,适合做增删元素操作。(vector)
	set接口同样是对collection的扩充,它不允许存放相同的元素。常用类HashSet和	TreeSet.HashSet主要能够快速定位到一个元素,需要用到HashCode()方法,而TreeSet	类中可以实现对元素的排序。

21、说出ArrayList,vector,LinkedList的存储性能和特性,HashMap和HashTable的区别?

ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始
ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作,他们都允许直接用序号索引元素,但是插入数据元素涉及到元素移动等内存操作,所以索引数据快而插入数据慢.
Vector使用了synchronized方法(线程安全),所以在性能上比ArrayList要差些.
LinkedList使用双向链表方式存储数据,按序号索引数据需要前向或后向遍历数据,所以索引数据慢,是插入数据时只需要记录前后项即可,所以插入的速度快.


22、Collection和Collections的区别?
Collection是集合类的一个顶级接口,其直接继承接口有List与Set
  而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对	集合中元素进行排序、搜索以及线程安全等各种操作。

23、Set里的元素是不能重复的,那么用什么方法来区分重复与否?是用==还是equals()?它们有何区别?用contains来区分是否有重复对象,还是都不用?
答:
用equals()和hashcode()合用;(略);
java.lang.String.contains()方法返回true,当且仅当此字符串包含指定的char值序列

24、List,Set,Map是否继承自Collection接口?
List,Set是,Map不是。 

  

posted @ 2017-02-27 14:13  ATJAVA  阅读(221)  评论(0编辑  收藏  举报