java期末学习指导.docx
- 文档编号:29293373
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:11
- 大小:19.49KB
java期末学习指导.docx
《java期末学习指导.docx》由会员分享,可在线阅读,更多相关《java期末学习指导.docx(11页珍藏版)》请在冰豆网上搜索。
java期末学习指导
java的特点
1.跨平台性软件可以不受计算机硬件和操作系统的约束而在任意的计算机环境下正常工作。
java虚拟机很好地实现了跨平台性,它提供了一个字节码到底层硬件平台及操作系统的屏障,使得java语言具备跨平台性
2.面向对象面向对象是指以对象为基本粒度,其下包含属性和方法。
3.安全性分为四个层面,即语言级安全性,编译时安全性,运行时安全性,可执行代码安全性。
4.多线程指允许一个应用程序同时存在两个或两个以上的线程,用于支持事物并发和多任务处理。
java的运行方式
采用java虚拟机。
可运行字节码的虚拟计算机系统。
它有一个解释器组件,可以实现java字节码和计算机操作系统之间的通信。
类和对象
类是指既包括数据又包括作用于数据的一组操作的封装体。
类中的数据称为成员变量,类中对数据的操作称为成员方法。
成员变量反映类的状态和特征,成员方法表示类的行为能力。
不同的类具有不同的特征和功能。
对象是类的实例。
对象是动态的,每个对象都有自己的生存周期,都会经历一个从创建,运行到消亡的变化过程。
类的特性
1.封装性为成员提供公有,保护,缺省和私有等多级访问权限,目的是隐藏类中的私有成员和类中方法实现的细节。
2.继承性一个类得到另一个类的全部或部分属性及方法的操作叫做类的继承。
增强了软件的可扩充能力,提高了软件的可维护性。
3.多态性使同一种方法作用与不同的对象产生不同的结果。
多态性有两种表现方式:
重载和重写。
重载是指类中方法可以同名但参数列表必须不同,体现了同一个类中方法的多态性,是编译多态。
重写是指子类重写了父类中同名的方法,体现了父类和子类之间的多态性,是运行多态。
接口的含义与作用
含义:
接口是一组常量和抽象方法的集合。
在java中,接口是一种引用数据类型。
与抽象类相似,接口也用于描述抽象的概念,约定多个类共同使用的常量和抽象方法。
抽象方法的具体实现由实际接口的类完成,实现接口的类必须覆盖接口中的所有抽象方法。
作用:
接口提供方法声明与方法实现相分离的机制,使多个类之间表现出共同的行为能力。
接口中一个抽象方法在实现接口的多个类中表现出多态性。
接口与抽象类的异同
相同点:
都包含抽象方法。
都不能被实例化。
都是引用数据类型。
不同点:
抽象类约定多个子类之间共同使用的方法,与子类之间采用单重继承机制,与普通类一样具有访问权限,可以含有非抽象方法也可以声明构造方法,可以声明成员变量并且子类可以对该成员变量赋值。
接口约定多个互不相关类之间共同使用的方法,一个类实现多个接口则实现了多重继承的功能,接口的访问权限只有public和默认两种并且接口中成员的访问权限均为public,接口中的方法全部是抽象方法,不能声明构造方法,接口中只能声明常量。
进程和线程的概念和区别
进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位,具有结构性,共享性,动态性,独立性,并发性,制约性。
线程是为了解决单线程进程调度存在进程时空开销大,进程通信代价大,不适合并行计算等问题,它是操作系统进程中能够独立执行的实体,是处理器调度的分派基本单位,具有并发性,共享性,动态性,结构性。
线程同步机制
1.设置信号设置共享变量(协调点变量)约定一个信号量,信号量有多种状态。
对信号P(测试信号量)操作和V(改变信号量)操作。
2.线程根据信号量状态而执行多线程根据P操作获得信号状态,并根据信号量状态决定哪个线程执行,执行后进行V操作。
流的概念和java中流的种类
流的定义:
流是指一组有顺序的,有起点和终点的字节集合,是对数据传输的总称和抽象。
数据在两个对象之间的传输都称为流。
方向性:
分为输入输出流。
读写操作:
一个流只能进行读或者写的一种操作,不能同时进行读和写。
缓冲区:
通过缓冲区一次可以读写若干个字节,使数据以足够大的数据块形式传送,提供数据传输效率。
作用:
流的目的是独立于设备(驱动程序),使应用程序屏蔽外设的差异性,以同样的方法操作各种外设。
java中流的种类:
字节输入输出流(InputStream,OutputStream),字符输入输出流(Reader,Writer)。
实验2继承和多态
1)首先阅读下列程序并写出运行结果,然后编译、执行以验证;
2) 增加Dog类的构造函数,使之可以初始化Dog类中的weight值,并实现构造函数重载;
3)在Dog类中添加方法getWeight以获得其weight值;
4) 要使Dog类对象的speak()方法返回值为“Woof Woof”,应如何做?
5)从Pet类派生Cat类,并且实现speak()方法返回值为”MiaoMiao”;
6)在Main方法中,通过类型多态的方式实现Pet对象分别调用Dog和Cat的speak()方法。
classPet{
protectedStringname;
publicPet(Stringn){
name=n;
}
publicStringgetName(){
returnname;
}
publicStringmove(){
return"run";
}
publicStringspeak(){
return"";
}
publicStringtoString(){
return"Mypet"+name;
}
}
classDogextendsPet{
protectedintweight;
publicDog(Strings,intweight){
super(s);
this.weight=weight;
}
publicDog(Strings){
super(s);
}
publicintgetWeight(){
returnweight;
}
publicStringspeak(){
return"WoofWoof";
}
}
classCatextendsPet{
publicCat(Strings){
super(s);
}
publicStringspeak(){
return"MiaoMiao";
}
}
classPetTest{
publicstaticvoidmain(String[]args){
PetmyPet=newPet("George");
DogmyDog=newDog("Spot");
CatmyCat=newCat("Kitty");
System.out.println(myCat.toString()+"\nSpeak"+myCat.speak());
System.out.println(myPet.toString()+"\n"+"Speak:
"+myPet.speak()+"\n"+myPet.move()+""+myPet.getName()+"\n");
System.out.println(myDog.toString()+"\n"+"Speak:
"+myDog.speak()+"\n"+myDog.move()+""+myDog.getName()+"\n");
}
}
实验4网络通信
2实验内容
任务1:
简单的TCP通信
服务器端在指定端口等待客户端连接请求,当有客户端连接到服务器时,向客户端发送”欢迎”信息。
客户向服务器端发起连接请求,连接成功后,读取服务器发送过来的信息。
然后,客户端和服务器端都结束。
参考源代码如下
//服务器端SimpleTCPServer.java
importjava.io.DataOutputStream;
importjava.io.IOException;
import.ServerSocket;
import.Socket;
publicclassSimpleTCPServer{
publicstaticvoidmain(String[]args)throwsIOException{
ServerSocketserver=newServerSocket(8885);//1、创建服务器,指定端口
Socketsocket=server.accept();//2、接收客户端连接阻塞式
Stringmsg="欢迎";
DataOutputStreamdos=newDataOutputStream(socket.getOutputStream());
dos.writeUTF(msg);//3、发送数据
dos.flush();
}
}
//客户端代码SimpleTCPClient.java
importjava.io.DataInputStream;
importjava.io.IOException;
import.Socket;
import.UnknownHostException;
publicclassSimpleTCPClient{
publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{
//1、创建客户端,必须指定服务器+端口
Socketclient=newSocket("localhost",8885);
DataInputStreamdis=newDataInputStream(client.getInputStream());
Stringecho=dis.readUTF();//2、接收数据
System.out.println(echo);
}
}
任务2:
简单的UDP通信
UDP服务器端在指定端口等待客户端请求报文,客户端把“UDP编程”字符串封装在UDP报文中,通过UDPsocket向服务器发送报文,服务器接收到报文后,输出报文内容。
然后客户端和服务器结束。
参考源代码如下:
//服务器代码SimpleUDPServer.java
importjava.io.IOException;
import.DatagramPacket;
import.DatagramSocket;
importjava.util.Arrays;
publicclassSimpleUDPServer{
publicstaticvoidmain(String[]args)throwsIOException{
DatagramSocketserver=newDatagramSocket(8888);//1、创建服务端+端口
byte[]container=newbyte[1024];//2、准备接受容器
DatagramPacketpacket=newDatagramPacket(container,container.length);//3、封装成包
server.receive(packet);//4、接受数据
byte[]data=packet.getData();//5、分析数据
System.out.println(newString(data));
server.close();//6、释放
}
}
//客户端代码SimpleUDPClient.java
importjava.io.IOException;
import.DatagramPacket;
import.DatagramSocket;
import.InetSocketAddress;
publicclassSimpleUDPClient{
publicstaticvoidmain(String[]args)throwsIOException{
DatagramSocketclient=newDatagramSocket(6666);//1、创建客户端+端口
Stringmsg="udp编程";//2、准备数据
byte[]data=msg.getBytes();
DatagramPacketpacket=newDatagramPacket(data,data.length,newInetSocketAddress("localhost",8888));//3、打包
client.send(packet);//4、发送
client.close();//5、释放
}
}
任务三:
基于TCP的Echo服务
服务器端在指定端口等待客户端连接请求,接收客户端连接请求,当读取客户端发送的信息时,在原有信息之前加上”Echo:
”信息后发送回客户端。
然后等待下一个客户端的请求。
客户向服务器端发起连接请求,连接成功后,从标准输入读取字符串,接着把字符串信息发送给服务器端,然后读取服务器发送回来的信息。
完成后客户端结束。
参考源码如下:
//服务器代码EchoTcpServer.java
importjava.io.BufferedReader;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
import.ServerSocket;
import.Socket;
publicclassEchoTcpServer{
publicstaticvoidmain(String[]args)throwsException{
//创建服务器端的socket对象
ServerSocketss=newServerSocket(5000);
while(true){
//监听连接
Socketsocket=ss.accept();
System.out.println("ConnectedSuccessfully!
");
//获得服务器端的输入流,从客户端接收信息
BufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream()));
//获得服务器端的输出流,向客户端发送信息
PrintWriteros=newPrintWriter(socket.getOutputStream(),true);
Stringstr=is.readLine();
System.out.println(str+"From"+socket);
//服务器端的输出
os.println("Echo:
"+str);
//关闭资源
is.close();
os.close();
socket.close();
}
}
}
//客户端代码EchoTcpClient.java
importjava.io.BufferedReader;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
import.Socket;
importjava.util.Scanner;
publicclassEchoTcpClient{
publicstaticvoidmain(String[]args)throwsException{
Socketsocket=newSocket("127.0.0.1",5000);//与服务器建立连接
//获取客户端的输出、输入流
PrintWriteros=newPrintWriter(socket.getOutputStream(),true);
BufferedReaderis=newBufferedReader(newInputStreamReader(
socket.getInputStream()));
//从标准输入读取一个整形数
Scannersc=newScanner(System.in);
System.out.println("输入字符串");
Stringc=sc.nextLine();
os.println(c);//将整形数通过输出流发送给服务器
//从服务器端接收响应信息
Stringstr=is.readLine();
System.out.println(str);
is.close();//关闭资源
os.close();
socket.close();
}
}
任务四:
基于TCP的点对点聊天
实现教材中的[例9.2]所示的图形化点对点聊天应用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 期末 学习 指导