自己的黑马程序员入学基础测试题,码出来希望给大家参考下,有什么不懂的地方欢迎大家指点!
第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,最后把猫接过去