1、什么是对象?什么是类?
所谓对象实际上就是真实的实体,例如一个人; 类是某些有共同特征的实体的集合,是一种抽象的概念。
类是对象的集合,对象是类的实体。
2、面向对象的特点 以及特点。
特点:
1》封装:将数据以及对数据的相应操作组织在一起,只向外界提供已定义的接口。封装也是类和对象的特点,它注重的是内部实现。
2》继承:发生在子类与父类之间,是子类从父类获取属性和方法的过程,提高了代码的复用性 和扩展性
3》多态:允许不同类型的对象 对同一消息 做出不同的响应。
4》抽象:将不同的对象的共同特征剥离出来构造成一个新的类。抽象是软件开发的基础
优点:使开发模块化,程序的修改与维护更方便
提高了的代码的复用性和可扩展性,可读性
3、java 常用的八种数据类型
byte 、short、long、double、float、boolean、int、char
4、重写(override) 与 重载(overload)
重写:它实现的是对象运行的多态性,一般发生在子类与父类之间,要求子类重写的方法要与父类方法的返回 类型一致
重载:它实现了对象编译时的多态性,同一类中,方法名相同,参数列表不同视为重载
5、抽象类 与 接口有什么异同
同:抽象类与接口都不能实例化
异:接口的成员变量都是public,抽象类可以是public,也可以是private、protected
有抽象方法的类一定是抽象类,抽象类不一定包含抽象方法
接口中所以得方法都是抽象的
6、访问修饰符
public 整个程序中都可以访问(公有)
private 当前类可以访问
protected 当前包可以访问
7、集合
1》List、set、MAP
List和Set是Collection接口的两个主要的子接口(map不是collection的子接口)
List:特征是其元素以线性方式存储,集合中可以存放重复对象。
set:元素是无放入顺序,元素不可重复
map:是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。改变操作允许您从映射中添加和除去键-值对。
键和值都可以为 null
。但是,您不能把Map
作为一个键或值添加给自身。
就个人而言.list 用的比较多. 其次map 最后set 至于什么情况下使用什么集合.看情况了
2》ArrayLIst 与 LinkedList
二者都是List接口的实现类
ArraList是实现了基于动态数组的数据结构,可以改变数组的大小,允许为null.能快速的访问元素,插入与移除元素的速度慢
LinkedList使用双向链表实现存储,对于新增和删除操作add和remove,LinedList比较占优势
8、套接字(Sockt)
服务器端(非多线程) :
- 用指定的端口实例化一个SeverSocket对象。服务器就可以用这个端口监听从客户端发来的连接请求。
- 调用ServerSocket的accept()方法,以在等待连接期间造成阻塞,监听连接从端口上发来的连接请求。
- 利用accept方法返回的客户端的Socket对象,进行读写IO的操作
- 关闭打开的流和Socket对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
/** *
基于TCP协议的Socket通信,实现用户登录,服务端 */ //1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket
serverSocket =newServerSocket( 10086 ); //1024-65535的某个端口 //2、调用accept()方法开始监听,等待客户端的连接 Socket
socket = serverSocket.accept(); //3、获取输入流,并读取客户端信息 InputStream
is = socket.getInputStream(); InputStreamReader
isr =newInputStreamReader(is); BufferedReader
br =newBufferedReader(isr); String
info = null ; while ((info=br.readLine())!= null ){ System.out.println( "Hello,我是服务器,客户端说:" +info); } socket.shutdownInput(); //关闭输入流 //4、获取输出流,响应客户端的请求 OutputStream
os = socket.getOutputStream(); PrintWriter
pw = new PrintWriter(os); pw.write( "Hello
World!" ); pw.flush(); //5、关闭资源 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); |
客户端:
- 用服务器的IP地址和端口号实例化Socket对象。
- 调用connect方法,连接到服务器上。
- 获得Socket上的流,把流封装进BufferedReader/PrintWriter的实例,以进行读写
- 利用Socket提供的getInputStream和getOutputStream方法,通过IO流对象,向服务器发送数据流
- 关闭打开的流和Socket。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//客户端 //1、创建客户端Socket,指定服务器地址和端口 Socket
socket =newSocket( "127.0.0.1" , 10086 ); //2、获取输出流,向服务器端发送信息 OutputStream
os = socket.getOutputStream(); //字节输出流 PrintWriter
pw =newPrintWriter(os); //将输出流包装成打印流 pw.write( "用户名:admin;密码:admin" ); pw.flush(); socket.shutdownOutput(); //3、获取输入流,并读取服务器端的响应信息 InputStream
is = socket.getInputStream(); BufferedReader
br = new BufferedReader( new InputStreamReader(is)); String
info = null ; while ((info=br.readLine())! null ){ System.out.println( "Hello,我是客户端,服务器说:" +info); } //4、关闭资源 br.close(); is.close(); pw.close(); os.close(); socket.close(); |