我的黑马基础测试题
-
创建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);
}
}
-
Collection和Collections有什么关系?List和Set有什么异同点?Map有哪些常用类,各有什么特点?
-
package com.itheima;
-
-
public classTest2 {
-
-
/**
-
* 第2题: Collection和Collections有什么关系?List和Set有什么异同点?Map有哪些常用类,各有什么特点?
-
*
-
*Collection和Collections有什么关系?
-
*Collection 是一个集合接口,Collection接口在Java类库中有很多具体的实现,
-
* 例如List、Set
-
*Collections 是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索、
-
* 排序、线程安全化等操作。
-
*
-
*
-
* List和Set有什么异同点?
-
* 不同点:
-
* List:元素是有序的,元素可以重复,因为该集合体系有索引
-
* Set:元素是无序的,元素不可以重复
-
* 相同点:
-
* List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类
-
*
-
*
-
* Map有哪些常用类,各有什么特点?
-
* Hashtable:底层是哈希表数据结构,不可以存入null键和null值,该集合线程是同步的,jdk1.0出现的 效率低
-
* HashMap:底层是哈希表数据结构,可以存入null键和null值,该集合线程是不同步的, jdk1.2出现的 效率高
-
* TreeMap:底层是二叉树数据结构,该集合线程是不同步的,可以用于给Map集合中的键进行排序
-
*
-
*
-
*/
-
publicstaticvoidmain(String[] args)
-
{ }
-
}
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个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person。
package com.itheima;
import java.util.Scanner;
/**
*
* 第5题 声明类Person,包含2个成员变量:name、age。定义函数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、 throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
package com.itheima;
/**
*
* 第8题 throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
*
*throw和throws有什么区别
*throw语句用在方法体内,表示抛出异常,由方法体内的语句处理
*throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理
*
*try、catch、finally分别在什么情况下使用
*try是将会发生异常的语句括起来,从而进行异常的处理
*catch是如果有异常就会执行他里面的语句
*finally不论是否有异常都会进行执行的语句
*注意:
*1、finally中定义的通常是 关闭资源代码,因为资源必须释放。
*2、finally只有一种情况不会执行,当执行到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();
}
}
}
}
}