测试题


自己的黑马程序员入学基础测试题,码出来希望给大家参考下,有什么不懂的地方欢迎大家指点!


第1题:Collection和Collections有什么关系?List和Set有什么异同点?Map有哪些常用类,各有什么特点?

1)Collection和Collections有什么关系?
 答:Collection是集合体系的根的接口,Collections是操作集合框架体系的工具类,定义的都是静态方法
     两者都是靠Collections提供方法去操作Collection集合框架体系的元素。

 2)List和Set有什么异同点?
 答:相同点:1.都继承Collection接口。2.都市存储对象元素的集合。3.都可以使用迭代器的方向进行集合的遍历。
       不同点:1.set集合是无序的而list集合是有序的。2.list集合可以重复,set集合不可以重复。3.对数据的存储方式不同。

3)Map有哪些常用类,各有什么特点?
 答:  HashTable:底层数据结构是哈希表,不可以存入空值,线程同步。
  HashMap:底层数据结构是哈希表,可以存入空值,线程非同步。
  TreeMap底层的数据结构是二叉树,线程非同步。


第2题:定义一个二维int数组,编写代码获取最小元素。

blic class Test2 {

	public static void main(String[] args){

		//第一个二维数组
		int[][] a = {{9,7,5},{2,4},{3,1},{11,6,8,10}};
		//初始化min
		int min = a[0][0];
		
		for(int i=0;i<a.length;i++){
			for(int j=0;j<a[i].length;j++){
				if(a[i][j]<min){
					min=a[i][j];
				}
			}
		}
		
		System.out.println(min);
		
	}

第3题:为什么需要配置path,什么时候需要classpath?

答: 在控制台输入中输入一个指令时先在当前文件目录下查找命令文件,path的环境变量中依次查找命令文件,以最先找到的为准,
  因为配置了path,所以在cmd命令下可以直接输入java和javac等jdk的命令;
  jvm在查找class文件时如果没有设置classpath会在当前路径查找,设置classpth后 仅在classpath路径下查找class文件。


第4题:从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。

public class Test4 {
	
	public static void main(String [] args){
		
		//键盘录入
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		//采用while()循环,循环输入数字转换成中文(采用对应关系遍历数组)
		while(true){
			try{
			String line = null;
			if((line=br.readLine())!=null){
				
				//将字符串拆分为字符到数组
				char[] number = line.toCharArray();
				char[] chinese = {'零','一','二','三','四','五','六','七','八','九'};
				
				for(int i = 0;i<number.length;i++){
					//将字符转换成整数
					int index = Character.getNumericValue(number[i]);
					
					System.out.print(chinese[index]);
				}
			}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}

第5题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}

public class Test5 {
	
	public static void main(String[] args){
		
		//定义元素数组
		int[] arr = {4,2,4,6,1,2,4,7,8};
		//定义一个数组
		List number = new ArrayList();
		//增强for循环
		for(int num:arr){
			//判断加入的元素是否相同,不相同则加入number数组
			if(!number.contains(num)){
			number.add(num);
			}
		}
		System.out.print(number);
	}
}

第6题:用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?

public class Test6 {
	
	
	public static void main(String[] args){
		
		System.out.println(test());
	}
	
	public static int test(){
		int x = 1;
		try{
			System.out.println(x);
			return x;
		}
		finally{
			x = 2;
			System.out.println(x);
		}
				
	}
}

答:先执行fianlly在执行try中return.在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到
了finally执行了,在转去之前try中先把要返回的结果存放到不同x的局部变量中去,执行完finally之前,在从中取出返回结果,
因此,即使finally中对变量x进行了改变,但是不会影响结果。


第7题:定义一个包含私有成员变量和函数的类,再定义一个内部类,在内部类函数中访问外部成员变量,并调用外部函数。在外部类函数中创建内部类对象,调用内部类函数。

public class Test7 {
	
	//定义包含私有变量和函数的类
	private int a =4;
	private void walk(){
		System.out.println("4轮走");
	}
	
	//内部类
	class Car{
		public void run(){
			System.out.println(a);
			walk();
			System.out.println("4轮跑");
		}	
	}
	
	public static void main(String[] args){
		Car car = new Test7().new Car();
		car.run();
	}
}

第8题:编程打印所有的3位质数,质数特点:只能被1和其本身整除。

public class Test8 {
	
	public static void main(String[] args){
		run(100,999);
	}
	
	public static void run(int start,int end){
		//定义一个计算器,打印10个换一行
		int count = 0;
		//三位质数从100到999结束
		for(int i = start;i<=end;i++){
			boolean flag = false;
			for(int j = 2;j<Math.sqrt(i);j++){
				if((i%j)==0){
					flag = true;
					break;
				}
			}
			if(!flag){
				System.out.print(i+" ");
				count++;
				if(count==10){
					System.out.println();
					//清零
					count = 0;
				}
			}
		}
		
	}
}

第九题:写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一, 后面5位任意数字,最后5位为任意相同的数字。例如:18601088888、13912366666

public class Test9 {
public static void main(String[] args) 
{
String number=getNumber();
checkTellPhoneNumber(number);
}
static void checkTellPhoneNumber(String str)
{
//正在表达式
String regex="[1][3458][0-9]{4}(\\d)\\1{4}";
boolean flag=str.matches(regex);
if(flag)
{
System.out.println("这是一个合法的手机号!");
}
else
System.out.println("这不是一个合法的手机号!!");
}
static String getNumber()
{
Scanner in=new Scanner(System.in);
String number=in.nextLine();
return number;
}
}



第10题:一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时, 狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。

答:思路:1, 应该先带猫过去    两岸:1.猫 2.狗,鱼
          2,然后带狗过去把猫接回来两岸:1.狗  2.鱼   船上猫
     3,把鱼到过去   两岸:1.狗,鱼  2.猫
     4,最后把猫接过去 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值