一、泛型
理解:是一种参数类型,一般应用于集合中,使用时明确数据类型,表示在此集合中允许放入的元素类型。
好处:把运行期间存在的安全隐患,提前到编译期解决;获取集合中的元素时无需再进行类型强制转换
使用:明确数据类型,必须是引用数据类型。使用时如果不明确泛型类型,则认为Object类型
定义格式:
定义的位置:接口、类、方法
自定义泛型格式:
interface Inter{
void show(T t);
}
class MyClass(E){
private E e;
private E[] es;
public <V> void show(V v){
System.out.println(V);
}
}
通配符:
<?> : 表示任意泛型类型。比如 方法的参数需要一个LIst<?>,表示带任意泛型类型的List,都可以接收
<? extends T> :表示任意泛型类型及子类型。比如 方法的参数需要一个LIst<? extends Animal>,表示带Aniamal及子类泛型类型的List,都可以接收
<? super T>:表示任意泛型类型及父类型。比如 方法的参数需要一个LIst<? extends Animal>,表示带Aniamal及父类泛型类型的List,都可以接收
二、File类
理解:系统中文件或者目录的抽象表示形式,一个File类的对象,就封装了一个文件或目录的信息,并且可以对文件进行创建或删除等操作
构造方法:
File(String path):// new File(“D:/test.txt”);
File(File f,String name)😕/File f1 = new File(“D:/”); File file = new File(f2,“hello/test.txt”);
三、IO流
理解:表示数据的输入输出,就跟水流动一样,数据从一个源头(影盘),到目的地(内存)。
IO流分类:
根据数据的流向分:
输入流:参照物(内存、java程序)
InputStream
FileInputStream
Reader
FileReader
输出流:
OutputStream
FileOutputStream
Writer
FileWriter
根据数据的传输的基本单位:
字节流:
InputStream
FileInputStream
FileInputStream(String name);
int read();
int read(byte[] bys);
OutputStream
FileOutputStream
FileOutputStream(String filename)
FileOutputstream(String filname,boolean append);//true追加写入文件
write(int byt);
write(byte[] bys);
write(byte[] int off,int len)
字符流:主要操作文本文件
Reader
FileReader
FileReader(String fileName);
int read();
int read(char[] chs);
Writer
FileWriter
FileWriter(String fileName)
FileWriter(String fileName,boolean append);true 表示追加写入到文件中
write(int ch);
write(char[] chs);
write(char[] chs,int off,int len);
write(String test);
一、缓冲流(处理流):对基本流的包装处理,提供一个数据缓冲区,目的就是提升效率
BufferedInputStream
BufferedInputStream(InputStream is);
int read();
int read(byte[]);
BufferedOutputStream
BufferedOutStream(OutputStream os)
write(int by);
write(byte[] bys);
write(byte[] bys,int off,int len)
BufferedReaader
BufferedReader(Reader reader)
int read();
int read(char[] chs)
String readLine() //读取一行字符串
BufferedWrite
BufferedWrite(Write write)
write(int ch);
write(char[] chs)
write(char[] chs,int off,int len)
write(String ste)//写入一个字符串
newLine()//写入一个换行符
flush()//刷新缓冲区
二、转换流
把字节流转换为字符流,转换流也是字符流
InputStreamReader
InputStreamReader(InputStream is)//使用平台默认编码格式
InputStreamReader(InputStream is,String charset)//按照指定的编码格式读取数据
int read() //读一个字符
int read(char[] chs)
OutputStreamWrite
OutputStreamWrite(OutputStream os)
OutputStreamWrite(OutputStream os,String charset)//按照指定的编码格式把数据写入到文件中
write(int ch);
write(char[] chs)
write(char[] chs,int off,int len)
三、对象流
如果希望把Java对象,直接存储到文件当中,需要使得Java类实现Serializable接口,这就是序列化。
如果希望读取存在文件当中的一个Java对象到内存中,这是反序列化
ObjectOutputStream
ObjectOutputStream(OutputStream os)
writeObject(Object obj);//写入java对象
ObjectInputStream
ObjectInputStream(InputStream is)
Object readObject() //读取一个对象
四、其他流
打印流
printStream
print(Object obj)
println(Object pbj)
println()//打印换行符
printWrite
print(Object obj)
println(Object pbj)
println()//打印换行符
标准输入输出流
System.in //标准输入流 本质是字节输入流
System.out//标准输出流 本质上是个字节打印流
五、JDK7中流异常处理方式
之前方式: try{需要异常处理的代码块} catch(IOException e){处理方式} finally{释放资源}
JDK7方式: try(需要释放资源的变量声明){ //自动释放资源
可能需要异常处理的代码
}catch(IOException e){
处理方式
}
六、网络编程
1.软件网络架构:
B/S : Browser Server
对开发人员:只需要开发服务器端,升级更新也只需要针对服务端
对用户:无需下载客户端,有浏览器即可
安全性相对差,对带宽要求高,对于大型游戏运行效果差
C/S:Client Server
需要开发客户端、服务端
使用时需要下载客户端,要更新客户端
安全性相对高,对网络要求相对低,只需要传输关键数据
2.TCP与UDP协议
UDP协议:(发短信)
非面向连接
安全性差
效率高
传输的数据量有限
TCP(打电话)
面向连接
安全性高、可靠的
效率低
传输的数据量无限制
建立连接:三次握手
断开连接:四次挥手
网络编程三要素
协议、IP(识别网络中的计算机)、端口(识别计算机上的某个程序)
4.TCP网络编程
客户端:
Socket s = new Socket("192.168.19.11",1234)
OutputStream os = s.getOutputStream();
os.wirte("hello TCP".getBytes());
s.close();
服务器端: