我的黑马基础测试题



我的黑马基础测试题

 

  1. 创建ArrayList对象,添加5个元素,使用Iterator遍历输出

 package com.itheima;

import java.util.*;

/**

 * 1题:  创建ArrayList对象,添加5个元素,使用Iterator遍历输出

 * */

 

public classTest1 {

 

   public static void main(String args[])

   {

      //创建一个集合的容器,使用Collection接口的子类ArrayList

      ArrayLista1=newArrayList();

       

      //ArrayList对象a1中,添加元素

      a1.add("java1");

      a1.add("java2");

      a1.add("java3");

      a1.add("java4");

      a1.add("java5");

     

      //利用for循环,使用iterator遍历输出元素,直到下一个为空 ,停止循环

     

      for(Iteratorit=a1.iterator();it.hasNext();)

      {

         sop(it.next());

      }

   }

   //定义一个输出的函数

   public static void sop(Object obj)

   {

      System.out.println(obj);

   }

}

 

  1. CollectionCollections有什么关系?ListSet有什么异同点?Map有哪些常用类,各有什么特点?

  2. package com.itheima;

  3.  

  4. public classTest2 {

  5.  

  6. /**

  7.  * 2题: CollectionCollections有什么关系?ListSet有什么异同点?Map有哪些常用类,各有什么特点?

  8.  *

  9.     *CollectionCollections有什么关系?

  10.     *Collection 是一个集合接口,Collection接口在Java类库中有很多具体的实现,

  11.     * 例如ListSet

  12.     *Collections 是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索、

  13.     * 排序、线程安全化等操作。

  14.     *

  15.     *

  16.     * ListSet有什么异同点?

  17.     * 不同点:

  18.     * List:元素是有序的,元素可以重复,因为该集合体系有索引

  19.     * Set:元素是无序的,元素不可以重复

  20.     * 相同点:

  21.     * ListSet都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类

  22.     *

  23.     *

  24.     * Map有哪些常用类,各有什么特点?

  25.     *  Hashtable:底层是哈希表数据结构,不可以存入null键和null值,该集合线程是同步的,jdk1.0出现的    效率低

  26.     *  HashMap:底层是哈希表数据结构,可以存入null键和null值,该集合线程是不同步的,  jdk1.2出现的   效率高

  27.     *  TreeMap:底层是二叉树数据结构,该集合线程是不同步的,可以用于给Map集合中的键进行排序

  28.     *

  29.     *

  30.     */

  31.    publicstaticvoidmain(String[] args)

  32.  { }

  33. }

     

3、 定义一个二维int数组,编写代码获取最小元素。

package com.itheima;

 

/**

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

 * */

public classTest3 {

   public static void main(String[] args)

   {

      int[][] arr={{12,23,23,45},{1,2,3,4},{34,56,78,90},{13,34,56,78}};

  

       sop("最小的元素是:"+getMin(arr));

   }

  

  

   public static int getMin(int[][] arr)

   {

      int min=arr[0][0];   //min初始化一个值

     

      for(int i=0;i<arr.length;i++)    //循环数组中行的长度

         for(int j=0;j<arr[i].length;j++) //循环每一列的长度

         {

            if(arr[i][j]<min)  

                min=arr[i][j];  //判断将最小的赋给min

         }

      return min;

   }

 

   public static void sop(Object obj)

   {

      System.out.println(obj);

   }

}

 

4、 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。

 package com.itheima;

 

/**

 *

 * 4题: 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。

 *

 *Java排序算法有:

 * 插入排序,冒泡排序,堆排序,归并排序,选择排序,计数排序,基数排序,桶排序,快速排序等等。

 *

 *  下面是快速排序

 */

 

public classTest4 {

   staticintcount= 0; 

     

   publicstaticvoidmain(String[] args) {

     

       int values[] = { 5, 4, 8, 3, 7, 2, 1, 9, 0, 6}; 

       qsort(values, 0, (values.length - 1));

       System.out.printf("\n\n排序后的结果是:"); 

      

       for (int i = 0; i < values.length; i++)

       { 

          System.out.printf("%d ", values[i]); 

       } 

  } 

 

  publicstaticvoidqsort(intvalues[], intleft, intright)

  { 

       int tmp = 0;  

       System.out.printf("\n这个是第%d次排序的结果:", count); 

       count++; 

      

       for (int i = 0; i < values.length; i++)

       { 

           System.out.printf("%d ", values[i]); 

       } 

      

       if (left < right)

       { 

           tmp = partition(values, left,right); 

           qsort(values, left,tmp); 

           qsort(values, tmp + 1,right); 

       } 

  }

 

   publicstaticintpartition(intvalues[], intleft, intright)

   { 

       int i = 0, j = 0; 

       int key = 0, tmp = 0; 

 

       if (null == values)

       { 

            return 0; 

       } 

 

       i = left; 

       j = right; 

       key = values[left]; 

 

       // 这个while循环可以实现排序的第一步:分组 

       while (i < j)

       { 

            while (values[j] > key)

            { 

                --j; 

            } 

            tmp = values[i]; 

            values[i] = values[j]; 

            values[j] = tmp; 

 

            while (values[i] < key)

           { 

               i++; 

           } 

           tmp = values[i]; 

           values[i] = values[j]; 

           values[j] = tmp; 

       } 

 

        return i; 

   }

}

 

5、 声明类Person,包含2个成员变量:nameage。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person

 package com.itheima;

import java.util.Scanner;

 

/**

 *

 * 5   声明类Person,包含2个成员变量:nameage。定义函数sayHello()

 * 调用时输出:我叫***,今年***岁了。声明类Chinese继承Person

 *

 */

 

 

 

public classTest5

{

   //声明类Person,有两个变量 name age

   public static class Person

   {

      private String name;               

        private int age;   

       

        //定义函数sayHello

        public void sayHello()              

        {

            System.out.println("请输入您的姓名:");                      

            //初始化接收键盘输入的scanner变量                   

            Scanner userName = new Scanner(System.in);

            //获取用户输入的姓名  

            name = userName.nextLine();

            System.out.println("您输入的名字是:" + name+ "\n请输入您的年龄:");    

            while(true)   

             { 

                //初始化接收键盘输入的scanner变量         

                Scanner userAge = new Scanner(System.in);   

                //获取用户输入的年龄        

                String strAge =userAge.nextLine();          

                int intAge;         

                //该异常会在输入的不是数字的情况下进入catch异常处理          

 

                try

                {

                    //将字符型变量强制转换成int型,如果字符型变量不是数字则会抛出异常 

                    intAge = Integer.valueOf(strAge);         

                    this.age = intAge;          

                    System.out.println("您输入的年龄是:" + age);       

                    if(age > 120) 

                    {

                        System.out.println("您输入的年龄是" + age + "。您输入的年龄超出了正常范围,请核对重新输入:");                                                                       

                        continue;        

                    }                                    

                    else          

                    {                                   

                        System.out.println("我叫" + name+ ",今年" + age +"岁了。");         

                        break;                   

                    }                          

                 }

                catch (Exception e)

                {                 

                   System.out.println("您输入的年龄不合法,请重新输入:");              

                }       

            }             

        } 

   }     

 publicclassChinese extendsPerson{}    

 staticPerson person= null;   

 publicstaticvoidmain(String[] args)   

 {  

     person = newPerson();

     person.sayHello();

 }

} 

  

 

 

6、 编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。

 package com.itheima;

import java.io.File;

 

/**

 *

 * 6  编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。

 *

 */

 

public classTest6 {

   public static void main(String[] args) throws Exception

   { 

      Filefile = newFile("D:\\exam.doc");

      //获取文件名

      getName(file);

   }

  

   //获取文件

   public static void getName(File file)

   { 

      Stringname=file.getName(); 

      Stringtz=name.substring(name.lastIndexOf(".")+1);

      System.out.println("文件名为:"+name+"  拓展名为:"+tz);

   }

 

}

 

7、 用控制台程序倒着输出九九乘法表;输出结果按下图所示:

  1*9=9    2*9=18    3*9=27    4*9=36   5*9=45    6*9=54   7*9=63    8*9=72   9*9=81

   ……

  1*3=3   2*3=6   3*3=9

  1*2=2   2*2=4

  1*1=1

 package com.itheima;

 

/**

 *

 * 7   用控制台程序倒着输出九九乘法表;输出结果按下图所示:

 

  1*9=9    2*9=18    3*9=27   4*9=36    5*9=45    6*9=54   7*9=63    8*9=72    9*9=81

  

  ……

   

  1*3=3   2*3=6   3*3=9

  

  1*2=2   2*2=4

  

  1*1=1

 *

 */

 

public classTest7

{

    public staticvoidmain(String[] args)

    {

       //外行控制行数

       for(intj=9;j>0;j--)

       {

          //内循环控制列数

          for(inti=1;i<=j;i++)

          {

             //输出99乘法表 倒序

             System.out.print(i+"*"+j+"="+i*j+"  ");

          }

          System.out.println();//换行

       }

    }

}

 

8 throwthrows有什么区别? trycatchfinally分别在什么情况下使用?

 package com.itheima;

 

/**

 *

 * 8  throwthrows有什么区别? trycatchfinally分别在什么情况下使用?

 *

 *throwthrows有什么区别

 *throw语句用在方法体内,表示抛出异常,由方法体内的语句处理 

 *throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理

 *

 *trycatchfinally分别在什么情况下使用

 *try是将会发生异常的语句括起来,从而进行异常的处理

 *catch是如果有异常就会执行他里面的语句

 *finally不论是否有异常都会进行执行的语句

 *注意:

 *1finally中定义的通常是 关闭资源代码,因为资源必须释放。

 *2finally只有一种情况不会执行,当执行到System.exit(0);finally不会执行。

 *

 */

 

 

public classTest8 {

 

}

 

9、 定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序

 package com.itheima;

import java.util.ArrayList;

import java.util.List;

 

/**

 *

 * 9  定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序

 *

 */

public class Test9

{

    public static voidsort(List<Integer> list)

    {

       int size = list.size();

       int[] store = new int[size];

       for (int i = 0; i < size;i++)

       {

           store[i] = list.get(i);

       }

 

       for (int i = 0; i < size;i++)

       {  

          //对数据进行从小到大排序

           for (int j = i; j<size; j++)

           {

               if (store[i] >store[j])

               {

                   int temp = store[j];

                   store[j] =store[i];

                   store[i] = temp;

               }

           }

       }

 

       for(int i  = 0 ; i <size ; i++)

       {

           list.set(i, store[i]);

       }

 

    }

 

    public static void main(String[]args)

    {

       List<Integer>list=new ArrayList<Integer> ();

        for (int i = 9; i > 0;i--)

        {

           //产生数据

            list.add(i);

        }  

        //输出集合 排序前

        System.out.println("排序前: "+list);

        Test9.sort(list);

        //输出集合 排序后

        System.out.println("排序后: "+list);

    }

}

10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。

服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

 package com.itheima;

 

import java.io.*;

import java.net.*;

import java.util.Scanner;

/**

 *

 * 10  使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。

 *      服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。

 */

 

//服务端

class TcpServer

{

    public static void main(String[]args)throws Exception

    {

        Socket s=null;

        try

        {

            while(true)

            {

               @SuppressWarnings("resource") ServerSocket serverSocket=newServerSocket(10001);

                s=serverSocket.accept();

                BufferedReader server_buf=newBufferedReader(new InputStreamReader(s.getInputStream()));

                String str=server_buf.readLine();

                System.out.println("服务端接受到数据...");

                Thread.sleep(10000);

                PrintStream pri=newPrintStream(s.getOutputStream());

                System.out.println("服务端将字符串反转后发送给客户端...");

               //将反转后的字符串打印到客户端屏幕上

                pri.println(newStringBuffer(str).reverse());

            }

        }

        //捕获异常

        catch(Exception e)

        {

            e.printStackTrace();

        }

        //关闭资源

        finally

        {

            if(s!=null)

            {

                try

                {

                    s.close();

                }

                catch(Exception e)

                {

                    e.printStackTrace();

                }

            }

        }

    }

}

 

 

class TcpClient//客户端

{

    public static void main(String[]args)throws Exception

    {

        Socket s=null;

        try

        {

            s=newSocket(InetAddress.getLocalHost(),10001);

            while(true)

            {

                BufferedReader client_buf=newBufferedReader(new InputStreamReader(s.getInputStream()));

                PrintStream pri=newPrintStream(s.getOutputStream());

                Scanner sc=newScanner(System.in);

                System.out.println("请输入一个字符串:");

                String str=sc.nextLine();

                System.out.println("正在向服务器发送数据...");

                pri.println(str);

                System.out.println("接受来自服务器反转的字符串...");

               System.out.println(client_buf.readLine());       

                sc.close();

            }

        }

        //捕获异常

        catch(Exception e)

        {

            e.printStackTrace();

        }

        //关闭资源

        finally

        {

           if(s!=null)

            {

                try

                {

                    s.close();

                }

                catch(Exception e)

                {

                    e.printStackTrace();

                }

            }

        }     

    }

}

 



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值