实训第八天

1.

import java.io.*;

public class Demo01 {
    public static void main(String[] args) {
        InputStream inputStream = Demo01.class.getClassLoader().getResourceAsStream("haha.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
        try {
            String text = br.readLine();
            System.out.println(text);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

2.

package com.kangxuanyikai;

public class Person {
    private String name;
    private int age;
    private String phoneNumber;

    public Person() {}

    public Person(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public Person(String name, int age, String phoneNumber) {
        this.name = name;
        this.age = age;
        this.phoneNumber = phoneNumber;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", phoneNumber='" + phoneNumber + '\'' +
                '}';
    }

    private void show() {
        System.out.println("你居然能调用我,哈哈,真牛逼!");
    }
}

2.1

@Test
public void GetClassTest() throws ClassNotFoundException {
    //获取Class对象,方式一:通过全类名.class的方式获取,已知一个类存在
    Class c1 = Person.class;
    System.out.println(c1); // class com.kangxuanyikai.Person

    //方式二:引用.getClass()得到类的Class对象
    Person person = new Person();
    Class c2 = person.getClass();
    System.out.println(c2); // class com.kangxuanyikai.Person
    System.out.println(c1 == c2); // true

    //方式三:Class.forName("全类名"),所谓的全类名就是包名+类名
    Class c3 = Class.forName("com.kangxuanyikai.Person");
    System.out.println(c3); //class com.kangxuanyikai.Person
    System.out.println(c1 == c3 && c2 == c3); //true

}

2.2

@Test
public void GetConstructorTest() throws Exception {
    //获取类的Class对象
    Class c = Class.forName("com.kangxuanyikai.Person");
    //获取构造器public
    Constructor constructor = c.getConstructor();
    Object o = constructor.newInstance();
    System.out.println(o);
    System.out.println("-----------------------------------------------------");
    //获取Person类中私有的构造器
    Constructor declaredConstructor = c.getDeclaredConstructor(String.class);
    declaredConstructor.setAccessible(true);
    Object o1 = declaredConstructor.newInstance("13843838438");
    System.out.println(o1);
}

2.3

@Test
public void GetMethodTest() throws Exception {
    Class c = Class.forName("com.kangxuanyikai.Person");
    Constructor constructor = c.getConstructor();
    Object o = constructor.newInstance();

    Method setName = c.getMethod("setName", String.class);
    setName.invoke(o,"张飞");
    System.out.println(o);
    System.out.println("----------------------------------------------");

    Method declaredMethod = c.getDeclaredMethod("show");
    declaredMethod.setAccessible(true);
    declaredMethod.invoke(o);
    System.out.println(o);
}

3.

package com.java;

import java.sql.*;

public class JDBCDemo {
    public static void main(String[] args){
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        //1.在项目上新建一个文件夹,lib,导入mysql驱动,并将jar包加入到项目中
        try {
            //2.注册驱动,使用到反射第三种方式
            Class.forName("com.mysql.cj.jdbc.Driver");
            //3.获取链接
            String url = "jdbc:mysql://182.92.120.70:3306/userdb";
            String username = "userdb";
            String password = "root";
            connection = DriverManager.getConnection(url, username, password);
            //System.out.println(connection);
            //4.获取预编译SQL,查询emp表中的数据
            String sql = "select * from emp";
            preparedStatement = connection.prepareStatement(sql);
            //5.查询,获取结果集(增删改,添加数据即可)并遍历;查询使用executeQuary(),
            //增删改使用execute()或者executeUpdate()
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                String ename = resultSet.getString("ename");
                String job = resultSet.getString("job");
                System.out.println(ename + " ==== " + job);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //6.释放资源Connection,PreparedStatement,ResultSet,释放时需从后往前
            //如果Connection,PreparedStatement,ResultSet对象为null,JVM GC
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }

    }

}

  • 30
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值