Java学习笔记 2
一、接口的应用(Interface)
1、模拟计算机USB接口程序设计
通常人们使用的计算机上都有USB接口,鼠标、键盘、麦克风等都可以连接到USB接口中使用。在计算机启动时,这些设备也随之启动;当计算机关闭时,这些设备也会随之关闭。鼠标、键盘、麦克风等USB接口设备都启动后,计算机才开机成功;当这些设备都关闭后,计算机才关机成功。
- USB接口,定义了设备的启动和关闭功能(USB.java)
package cn.edu.cqust.usb;
public interface USB {
void turnOn();//启动
void turnOff();//关闭
}
- 鼠标类,实现了USB接口(Mouse.java)
package cn.edu.cqust.usb;
public class Mouse implements USB {
@Override
public void turnOn() {
System.out.println("鼠标启动了......");
}
@Override
public void turnOff() {
System.out.println("鼠标关闭了......");
}
}
- 麦克风类,实现了USB接口(Mic.java)
package cn.edu.cqust.usb;
public class Mic implements USB {
@Override
public void turnOn() {
System.out.println("麦克风启动了......");
}
@Override
public void turnOff() {
System.out.println("麦克风关闭了......");
}
}
- 键盘类,实现了USB接口(KeyBoard.java)
package cn.edu.cqust.usb;
public class KeyBoard implements USB {
@Override
public void turnOn() {
System.out.println("键盘启动了......");
}
@Override
public void turnOff() {
System.out.println("键盘关闭了......");
}
}
- 计算机类,拥有4个USB接口,具有添加USB设备、开机、关机的功能(Computer.java)
package cn.edu.cqust.usb;
public class Computer {
private USB[] usbArr=new USB[4];
//向计算机上连接一个USB设备
public void add(USB usb){
//遍历所有的插槽
for(int i=0;i<usbArr.length;i++){
//如果发现一个空的
if(usbArr[i]==null){
usbArr[i]=usb;
break;
}
}
}
//计算的开机功能
public void powerOn(){
//遍历所有的插槽
for(int i=0;i<usbArr.length;i++){
//如果发现有设备
if(usbArr[i]!=null){
//将USB设备启动
usbArr[i].turnOn();
}
}
System.out.println("计算机开机成功!!!");
}
//计算的关机功能
public void powerOff(){
//遍历所有的插槽
for(int i=0;i<usbArr.length;i++){
//如果发现有设备
if(usbArr[i]!=null){
//将USB设备关闭
usbArr[i].turnOn();
}
}
System.out.println("计算机关机成功!!!");
}
}
- 运行类(测试类)(Test.java)
package cn.edu.cqust.usb;
public class Test {
public static void main(String[] args) {
//实例化计算机对象
Computer computer=new Computer();
//向计算机中添加鼠标、麦克风、键盘
computer.add(new Mouse());
computer.add(new Mic());
computer.add(new KeyBoard());
//启动计算机
computer.powerOn();
//关闭计算机
computer.powerOff();
}
}
最终的执行结果:
二、IO的应用
1、文件的复制
将图片文件做一个备份,以防图片文件损坏。请采用三种不同的方式实现复制:
(1)一个字节一个字节地依次复制
(2)字节块复制
(3)带缓冲的复制
- 一个字节一个字节地复制—Copy By Byte
InputStream is = null;
OutputStream os = null;
try{
is = new FileInputStream("路径分级用\\");
os = new FileOutputStream("路径");
int a = -1 ;
while((a = is.read()) != -1){
os.write(a);
}catch(Exception e){
e.printStackTrace();
} finally{
try{
if(is != null)
is.close();
if(os != null)
os.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
- 字节块复制—Copy By Byteblock
InputStream is = null;
OutputStream os = null;
try{
is = new FileInputStream("路径分级用\\");
os = new FileOutputStream("路径");
int a = -1 ;
byte buffer[] = new byte[32]; //定义字节缓冲器
while ((a = is.read(buffer)) != -1){
os.write(buffer,0,a); //读入的时候变动了
os.flush(); //刷新缓冲区
}catch(Exception e){
e.printStackTrace();
} finally{
try{
if(is != null)
is.close();
if(os != null)
os.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
- 使用缓冲流 — Copy by Buffer
InputStream is = null;
OutputStream os = null;
try{
is = new FileInputStream("路径分级用\\");
os = new FileOutputStream("路径");
//实例化缓冲流对象
bis = new BufferInputStream(is);
bos = new BufferOutputStream(os);
int a = -1 ;
byte buffer[] = new byte[32]; //定义字节缓冲器
while ((a = bis.read(buffer)) != -1){
bos.write(buffer,0,a); //读入的时候变动了
bos.flush(); //刷新缓冲区
}catch(Exception e){
e.printStackTrace();
} finally{
try{
if(is != null)
is.close();
if(os != null)
os.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
最终结果展示:
三、线程的应用
四、JavaFx的应用(GUI界面)
五、socket的应用(网络编程)
基于Socket的即时通信
编写程序,建立一个功能齐全的Socket通信,其工作过程包含四个基本的步骤:
- 创建Socket;
- 打开连接到Socket的输入/出流;
- 按照一定的协议对Socket进行读/写操作;
- 关闭Socket。
- 循环读取
五、JDBC编程(Java处理SQL)
解析: