当前位置:网站首页>网络、IO流、反射、多线程、异常
网络、IO流、反射、多线程、异常
2022-06-22 05:26:00 【weixin_42433538】
一、建立客户机与主机联系 (网络)
- 主机
package text;
import java.io.IOException; //导入 这个包来捕获输入输出异常
import java.io.InputStream; //是java标准库提供的最基本的输入流,它是一个抽象类,是所有输入流的超类
import java.net.ServerSocket; //服务端套接字 服务器程序和IP地址绑定
import java.net.Socket; // 客户端初始化了一个socket连接,用来连接服务器,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket。任何一个Socket都是由IP地址和端口号唯一确定的。
public class Java03 {
public static void main(String []args) throws IOException {
//TODO 服务器端代码如下:
//ip:相当于主机号码
//port:分机号码
//创建服务器端套接字、指定端口号
ServerSocket ss=new ServerSocket(1009);
//接收请求、并返回套接字
Socket s=ss.accept();
InputStream is=s.getInputStream();
byte [] b=new byte[1024];
int i=is.read(b);
String str=new String(b,0,i);
System.out.println(str);
while(true){
// while死循环包住代码 可 接收多个客户机发来信息
}
}
}
- 客户机
package text;
import java.io.IOException; //导入 这个包来捕获输入输出异常
import java.io.OutputStream; //使用OutputStream流输出文件
import java.net.Socket; //客户端初始化了一个socket连接,用来连接服务器,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket。任何一个Socket都是由IP地址和端口号唯一确定的。
import java.net.UnknownHostException;
public class Java04 {
public static void main(String[] args) throws UnknownHostException, IOException {
//TODO 客户端代码如下:
// 创建套接字对象,必须指定ip和port
Socket s=new Socket("192.168.10.37",1009);
OutputStream o=s.getOutputStream();
String str="hallo";
o.write(str.getBytes());
}
}

二、I/O 体系
I / O : Input/Output 读/写 输入/输出
字节流:按照字节的方式来读写:byte[ ]
字节输入流:java.io.InputStream
字节输出流:java.io.OutputStream字符流:按照字符的方式来读写:char[ ]
子符的输入流:java.io.Reader
字符的输出流:java.io.Writer本地文件读写
package page;
import java.io.FileReader;//文件输入字符流
import java.io.IOException;
import java.io.BufferedReader; //缓冲流
import java.io.FileNotFoundException; //抛出异常
public class Java05 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//读本机文件
/第一步创建文件输入流
FileReader f=new FileReader("d:/1.txt");
//第二步 创建缓冲流对象
BufferedReader b=new BufferedReader(f);
String s="";
while((s=b.readLine())!=null) {
System.out.println(s);
}
//第三步 关闭IO流
b.close();
f.close();
}
}

- 本机写文件
package page;
import java.io.FileWriter; //写
import java.io.IOException;
import java.io.BufferedWriter; //写缓冲
public class Java06 {
public static void main(String[] args) throws IOException {
FileWriter f=new FileWriter("D:/2.txt",true); //true 后添加不会覆盖,反之
BufferedWriter b=new BufferedWriter(f);
b.write("Hallo123"+"\r"); // \r 或\n 换行
b.close();
f.close();
}
}

三、反射
(1) java反射API
- java.lang.Class 类
- java.lang.reflect.Field 成员变量
- java.lang.reflect.Method 成员方法
- java.lang.reflect.Constructor 构造方法
package text;
import java.lang.Class;
import java.lang.reflect.Field; //成员对象
import java.lang.reflect.Method;//成员方法
import java.lang.reflect.Constructor; //构造方法
public class Java01 {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
//用反射创建对象 iop控制反转 @ 底层实现功能 用反射创建对象 instance 获取
Class J=Class.forName("text.Java02");
Java02 j2=(Java02) J.newInstance();
j2.setAge(2);
System.out.println(j2);
}
}


四、多线程
方式一 :通过继承Thread类来实现多线程
方式二:通过实现Runnable 接口来实现多线程
方式一 Rhread实现
package page;
public class T1 extends Thread {
//这个是线程的核心业务方法
public void run() {
while(true) {
System.out.println(Thread.currentThread().getName());
}
}
}

- 启动继承Thread

- 方式二 Runnable 接口来实现

package page;
public class T2 implements Runnable {
public void run() {
//这个是线程的核心业务方法
while(true) {
System.out.println(Thread.currentThread().getName());
}
}
}
- 启动实现Runnable 接口

五、异常
package page;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Random;
public class Java07 {
public static void main(String []args) throws FileNotFoundException {
//(1) 算数异常: java.lang.ArithmeticException
int a=3/0;
//(2) 空指针异常: java.lang.NullpointerException
String s=null;
System.out.println(s.equals("123"));
//(3)数组下标越界: java.lang.ArrayIndexOutOfBoundsException
int [] arr= {
1,2,3};
System.out.println(arr[3]);
//(4)类型转换异常: java.lang.ClassCastException
Object o = new Random();
String r=(String) o;
//(5)文件找不到异常: java.io.FileNotFoundException
FileReader f=new FileReader("d:/123.txt");
}
}
总结
边栏推荐
- rambbmitmq消费方
- P1318 积水面积
- \[\e]0;\[email protected]\h: \w\a\]\[\033[01;32m\]\[email protected]\h\[\033[0
- 2022 Shanxi secondary vocational group "Cyberspace Security" event module b- web page penetration
- Which methods are not allowed to be overridden?
- [graduation season · advanced technology Er] a graduate student's chatter
- jedispool工具类
- P1160 queue arrangement
- 1108. Defanging an IP Address
- Some templates about bisection
猜你喜欢

The prediction made ten years ago by the glacier has now been realized by Ali, which is very shocking
![[graduation season · advanced technology Er] a graduate student's chatter](/img/c2/dc77b8ffecfcb0a495e1dc8b6e7922.png)
[graduation season · advanced technology Er] a graduate student's chatter

Non recursive printing Fibonacci sequence

【云原生】2.2 kubeadm创建集群

ActiveMQ knowledge summary of Message Oriented Middleware

P1318 ponding area

Topic selection system of college graduation design based on SSM

JS regular expression to implement the thousands separator

毕业季 | 新的开始,不说再见

Use keytool to access the JKS file get SSL certificate
随机推荐
The prediction made ten years ago by the glacier has now been realized by Ali, which is very shocking
Jedispool tool class
P1160 queue arrangement
Leetcode hot1-50
CMAKE notes
DTS migration script MySQL
Traveler's budget (Los Angeles Valley)
Remove then add string from variable of Makefile
致远OA漏洞分析、利用与防护合集
风阀执行EN 1634-1耐火测试完整性能坚持 4小时吗?
Six sides tmall has already offered. After a review of my experience, is it really that difficult to enter a big factory?
Link a static library‘s all sections
Online text code comparison tool
中小企业签署ERP合同时,需要留意这几点
【云原生】2.2 kubeadm创建集群
TIDB-升级版本
Zhiyuan OA vulnerability analysis, utilization and protection collection
记本地项目启动报错:无效的源发行版: 8
SQL classification, user properties
移动端布局适配