本帖最后由 perry2017 于 2018-1-4 17:14 编辑
课程笔记--<反射><网络>
1. 反射部分 反射的目的- 在运行时,我们可以获取任意一个类的所有方法和属性
- 在运行时,让我们调用任意一个对象的所有方法和属性
反射的前提
- 通过Object.getClass
- 类名.class
- class的forname()
构造方法
getContructors()只能获取public修饰的构造方法
Class stuClass = Class.forName("com.fanshe.Student");
Constructor[] constructors = stuClass.getConstructors();
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
//1、获取无参的
Constructor nullPram = stuClass.getConstructor();
System.out.println(nullPram);
//2、获取有参的
Constructor hasPram = stuClass.getConstructor(String.class, int.class);
System.out.println(hasPram);
//3、通过Constructor对象创建学生类的对象
Object s1 = nullPram.newInstance();
System.out.println(s1);
Object s2 = hasPram.newInstance("张三", 18);
System.out.println(s2);
## 成员变量
java 1. 获取学生类的字节码对象 Class clazz = Class.forname("包名+类名"); 2. 获取学生的对象 Object stu = clazz.newInstance();
java 1. Field fs = clazz.getFields();
Field getFied(String fieldName) Fields getFieds();
* 使用成员变量的步骤
java 1. 获取学生类的字节对象 2. 获取学生对象 3. 获取私有的字段对象 4. 修改字段对象 set 5、打印
成员方法无参无返回值 1. 获取学生类的字节码对象 Class clazz = Class.forname("包名+类名");2. 获取学生类的对象 Object stu = clazz.newInstance();3.Method.invoke(Object, )有参无返回值 无参有返回值的方法
JavaBeanJavaBean:用于封装数据
- 类使用公共进行修饰
- 提供私有修饰的成员变量
- 为成员变量提供公共getter和setter方法
- 提供公共无参的构造
- 实现序列号接口
BueanUtils: Apache提供的一个组件,主要功能就是为了简化JavaBean封装的操作 setProperty(Object bean, String name, Object value) 给JavaBean对象的成员变量进行赋值
底层并不是直接操作成员变量,而是操作和成员变量名有关的get和set方法。
2. 网络部分
网络编程- 通信通信三要素
- IP地址:InetAddress(32位)
网络中设备的标识,不易记忆,可用主机名 - 端口号
用于标识进程的逻辑地址,不同进程的标识 - 传输协议
作用: 通信的规则
UDP- 使用UDP协议发送数据//创建发送端Socket对象DatagramSocket ds = new DatagramSocket();创建数据并打包//发送数据 ds.send();//释放资源ds.close();
TCP1、发送步骤 1. 创建发送端Socket对象(创建连接) 2. 获取输出流对象 3. 发送数据 4. 释放资源 public class void main[String[] args] { //创建发送端Socket对象(创建连接) Socket socket = new Socket(InetAddress.getName("主机名"),port); OutputStream os = socket.getOutputStream(); String str = "Hello"; os.writer(str.getBatys()); socket.close(); os.close(); }2、接收步骤 1. 创建接收端Socket对象(明确端口号) 2. 监听(阻塞) 3. 获取输入流对象 4. 获取数据/输出数据 5. 释放资源 public class void main[String[] args] { ServerSocket server = new ServerSocket(port); Socket socket = server.accpet(); InputStream is = socket.getInputStream(); byte[] buf = new byte[1-24]; int len; len= is.read(buf); syso(new String(buf,0,len)); socket.close(); }
|