您的位置 首页 java

JAVA进阶知识练习题(下)

一、Object类&Date类&Calender类& StringBuilder 类习题

1.1 练习一:简述String类中的equals方法与Object类中的equals方法的不同点。

答:String类中的equals方法是用来判断两个对象的内容是否相同,而Object 类中的equals方法是用来判断两个对象的地址是否相同。

1.2 练习二:不运行代码,直接说出打印结果,并解释原因。

JAVA进阶知识练习题(下)

运行结果:I love java me 2

原因:当执行代码的时候,首先加载静态变量,然后执行main方法,由于main方法内部第一行代码为输出语句,里面new了此类对象,当执行此行代码时会先创建了本类的对象,由于此类重写了 toString 方法,会先执行toString方法的打印输出,然后返回“java ”,再执行main方法第一行打印输出。在 java 中“System.out.println(类对象名);”实际输出的是该对象的toString()方法返回的字符串,即括号中的内容等价于类对象名.toString()

1.3 练习三:简述StringBuilder类与String类的区别。

答:String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响。

StringBuilder又称为可变字符序列,是JDK5.0中新增加的一个类,它是一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。即它是一个容器,容器中可以装很多字符串,并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容,StringBuilder会自动维护数组的扩容。

1.4 练习四:请用代码实现:获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08。

JAVA进阶知识练习题(下)

1.5 练习五:用程序判断2018年2月14日是星期几:

JAVA进阶知识练习题(下)

二、Random类&ArrayList集合习题

2.1 练习一:随机生成十组六位字符组成的验证码,验证码由大小写字母、数字字符组成。

2.1.1 代码实现:

JAVA进阶知识练习题(下)

2.2 练习二:定义getNumList方法,随机生成100个数字,数字范围从1到10。定义printCount方法,统计每个数字出现的次数并打印到控制台。

2.2.1 代码实现:

JAVA进阶知识练习题(下)

三、缓冲流&转换流习题

3.1 练习一:实现一个验证码小程序,要求如下:

1. 在项目根目录下新建一个文件:data.txt,键盘录入3个字符串验证码,并存入data.txt中,要求一个验证码占一行;

2. 键盘录入一个需要被校验的验证码,如果输入的验证码在data.txt中存在:在控制台提示验证成功,如果不存在控制台提示验证失败

3.1.1 代码实现:

JAVA进阶知识练习题(下)

JAVA进阶知识练习题(下)

四、 网络通信 概述& TCP协议 习题答案

4.1 练习一:请写出IP地址和端口号的概念:

IP地址:称为互联网协议地址,是用来给一个网络中的计算机设备做唯一的编号.

端口号:端口号用来给计算机里的应用程序(进程)做唯一的标识,用2个字节表示的整数,取值范围0~65535

4.2 练习二:TCP协议中”三次握手”其中的第一次握手指的是什么:

答:第一次握手:客户端向服务器发送请求,等待服务器确认

4.3 练习三: TCP 网络程序

4.3.1 需求:

1、在项目下创建TCP 服务器端 端口号为8888

2、等待客户端连接,如果有客户端连接,获取客户端对象并读取数据

3、在项目下创建TCP客户端,访问之前创建的服务器端,服务器端ip 127.0.0.1 端口号8888

4、客户端连接服务器,并发送 hello.服务器,我是客户端.

4.3.2 代码实现:

JAVA进阶知识练习题(下)

JAVA进阶知识练习题(下)

五、线程&同步习题:

5.1 练习一:请描述 Thread 类中的start()方法与run()方法的区别。

答:线程对象调用run()方法不开启线程,仅是对象调用方法。线程对象调用start()方法开启线程,并让jvm调用run()方法在开启的线程中执行。

5.2 练习二:请描述创建 线程 的两种方式:

第一种方式是将类声明为 Thread 的子类。

1. 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。

2. 创建Thread子类的实例,即创建了线程对象。

3. 调用线程对象的start()方法来启动该线程。

第二种方式是声明一个类实现Runnable 接口。

1. 定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

2. 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,Thread对象才是真正的线程对象。

3. 调用线程对象的start()方法来启动线程。

5.3 练习三:请描述在线程的 生命周期 中的几种状态

1. NEW(新建):线程刚被创建,但是并未启动。

2. Runnable(可运行):线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器。

3. Blocked(锁阻塞):当一个线程试图获取一个对象锁,而该对象锁被其他的线程持有,则该线程进入Blocked状态;当该线程持有锁时,该线程将变成Runnable状态。

4. Waiting(无限等待):一个线程在等待另一个线程执行一个(唤醒)动作时,该线程进入Waiting状态。进入这个状态后是不能自动唤醒的,必须等待另一个线程调用notify或者notifyAll方法才能够唤醒。

5. Timed Waiting(计时等待):同waiting状态,有几个方法有超时参数,调用他们将进入Timed Waiting状态。这一状态将一直保持到超时期满或者接收到唤醒通知。带有超时参数的常用方法有Thread.sleep 、Object.wait。

6. Teminated(被终止):因为run方法正常退出而死亡,或者因为没有捕获的异常终止了run方法而死亡。

5.4 练习四:请描述什么是进程,什么是线程,进程与线程之间的关系

进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。

线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

六、异常习题

6.1 请描述throw与throws的区别:

1. throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。

2. throws 关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常对象抛给方法调用处。

6.2 异常处理方式有几种,分别是什么?

答:异常的处理方式有两种,分别是使用throws和try…catch…finally

1、throws用在方法的声明上后接异常类名,是把异常抛给调用者进行处理

2、try…catch…finally是捕获异常,自己处理,处理完毕后面的程序可以继续运行

1. try代码块中是可能出现异常的代码

2. catch代码块,是遇到异常,对异常进行处理的代码

3. finally代码块是无论是否发生异常,都必须执行的代码,用于释放资源.

文章来源:智云一二三科技

文章标题:JAVA进阶知识练习题(下)

文章地址:https://www.zhihuclub.com/179241.shtml

关于作者: 智云科技

热门文章

网站地图