1、 编程题:写一个Singleton出来-------------核心就是构造方法的私有化
package com.test.demo;
public class Singleton {
private static final Singleton sin=new Singleton();
private Singleton(){ //将构造方法私有化
}
public static Singleton getInstance(){
return sin;
}
}
在Java中有Runtime类、Class类都属于单例设计。
2、 编写一段代码,实现在控制台输出一组数字后,排序后在控制台输出。
假设数字中间使用“”进行分割,既然是排序,则可以使用集合保持,使用TreeSet保存。
package com.test.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Demo {
public static void main(String[] args) throws Exception{
BufferedReader buf=new BufferedReader(
new InputStreamReader(System.in));
System.out.print("请输入一组数据,中间使用空格分隔:");
String str=buf.readLine();
Set<Integer> set=new TreeSet<Integer>();
String s[]=str.split(" ");//进行拆分
for(String x : s) {
set.add(Integer.parseInt(x)); //加入数据
}
System.out.print("排列之后的结果是:");
Iterator<Integer> iter=set.iterator();
while(iter.hasNext()){
System.out.print(iter.next()+"、");
}
}
}
以上的操作中,因为所有的数据都已经假设是正确的数字,但是时间中有可能是字符串。
§ 第一种方法:允许有字符串,但是将所有的字符串忽略
§ 第二种方法:不允许有字符串,如果出现了字符串,则程序不再向下继续进行。
为程序改善功能:
package com.test.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Demo {
public static void main(String[] args) throws Exception{
BufferedReader buf=new BufferedReader(
new InputStreamReader(System.in));
System.out.print("请输入一组数据,中间使用空格分隔:");
String str=buf.readLine();
Set<Integer> set=new TreeSet<Integer>();
String s[]=str.split(" ");//进行拆分
for(String x : s) {
if(x.matches("\\d+")){
set.add(Integer.parseInt(x));
}
//
}
System.out.print("排列之后的结果是:");
Iterator<Integer> iter=set.iterator();
while(iter.hasNext()){
System.out.print(iter.next()+"、");
}
}
}
3、 列出某文件夹下的所有文件。
典型的递归调用。
package com.test.demo;
import java.io.File;
public class ListFiles {
public static void main(String[] args) {
File file=new File("D:"+File.separator+"doc");
fun(file);
}
public static void fun(File file){
if(file.isDirectory()){
File f[]=file.listFiles();
if(f!=null){
for(int x=0; x<f.length; x++){
fun(f[x]);
}
}
}else{
System.out.print(file);
}
}
}
4、 Char型变量中能不能存储一个中文汉字?为什么?
可以存放,因为使用的是unicode编码
5、 多线程有几种实现方法,都是什么?同步有多种实现方法,都是什么?
两种实现方法,继承Thread类,实现Runnable接口
l Thread类是Runnable接口的子类
l 使用Runnable接口可以实现资源共享的目的
l 所有线程操作都必须通过Thread类的start()方法启动
两种实现同步的方法
l 同步代码块:Synchronized(this){}
l 同步方法
6、 Float型float f=3.4是否正确?
不正确,因为默认情况下3.4是double类型的数据
7、 String与Stringbuffer的区别?
String不可修改,Stringbuffer允许修改
8、 Class.forName的作用?为什么要用?
Class.forName属于向容器之中加载程序,例如:之前讲解的JDBC的使用曾经使用此语句
9、 Int和integer有什么区别?
Int是基本数据类型,integer是包装类
在JDK1.5之后,可以实现自动装箱及拆箱的操作
10、 用最有效率的方法算出2乘8等于几?
就是使用移位操作:2<<3
11、 请说出类集框架的完整结构。
类集框架最大的接口:Collection、Map、Iterator、Enumeration
Collection:存放单值
List:允许有重复内容
Arraylist:异步处理,新的操作类,非线程安全
Vector:同步处理,旧的操作类,线程安全,支持Enumeration输出
Set:不允许有重复内容,靠HashCode()和equals ()进行重复的验证
HashCode:无序存放
ThreeSet:有序存放,按Comparable排序
Map:存放一对值
HashMap:新的类,异步处理,非线程安全,允许有空值。
Hashtable:旧的类,同步处理,非线程安全,不允许有空值。
Iterator:迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准
Enumeration:旧的输出操作。
12、 是否可以继承String类
不允许,因为使用了final声明。