1 哈希函数满足什么条件?

  计算简单/散列地址分布均匀。

3 System.gc()   VS  Runtime.gc()

  java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写

  提示JVM进行垃圾回收。但是不保证立即执行。

4 finalize() 什么时候调用?

  在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法,一般建议在该方法中释放对象持有的资源。

5 对象的引用设置为null,垃圾收集器是否立即释放对象占用的内存。

  不会。在下个垃圾回收周期中,这个对象将是可被回收的。

6 JDBC

  JDBC允许用户在不同的数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不关心底层数据库细节。

Java面试(三)
package interview;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest {

    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.driver");
        } catch (ClassNotFoundException e) {
            System.out.println("找不到驱动程序类 ,加载驱动失败!");
        }
        // JDBC连接的URL:协议:子协议:数据源标识
        String url = "jdbc:mysql://localhost:3306/test?useUicode=true";

        // 创建数据库连接
        String username = "root";
        String password = "root";

        Connection con = null;
        try {
            con = DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            System.out.println("数据库连接失败!");
            e.printStackTrace();
        }

        /*
         * 创建statement: 要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型:
         * 1、 执行静态SQL语句。通常通过Statement实例实现。 2、
         * 执行动态SQL语句通常通过PreparedStatement实例实现。 3、
         * 执行数据库存储过程。通常通过CallableStatement实例实现。
         * 注意:在SQL中如果某些参数没有确定,如"select * from t1 where c1>? and c2<?",这种语句是静态SQL
         * ,不是动态SQL,虽然个别参数的值不知道,但整个SQL的结构已经确定,数据库是可以将它编译的,在执行阶段只需将个别参数的值补充进来即可
         * 具体的实方式:
         */

        Statement stmt = null;
        try {
            stmt = con.createStatement();
            PreparedStatement pstmt = con.prepareStatement(sql);
            CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}");

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        /*
         * 执行SQL: Statement接口三种SQL方法:executeQuery, executeUpdate, execute
         * ResultSet executeQuery(String sql) : 查询,返回结果集。 Int
         * executeUpdate(String sql) : insert/update/delete, DDL(create table,
         * drop table) Execute(sql) : 返回多个结果集,多个更新计数或二者结合的语句。
         */
        ResultSet rs = stmt.executeQuery("xx");
        int rows = stmt.executeUpdate("xx");
        Boolean flag = stmt.execute("xxx");

        // 处理结果:
        while (rs.next()) {
            String name = rs.getString("name"); //
            String pass = rs.getString(1); // 这个方法高效,列是从左到右,从1开始
        }

        // 关闭JDBC对象
        // 关闭记录集 ->关闭声明->关闭连接对象。
        if (rs != null) { // 关闭记录集
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) { // 关闭声明
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con != null) { // 关闭连接对象
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
View Code

相关文章:

  • 2021-12-05
  • 2021-06-07
  • 2021-05-03
  • 2021-08-05
  • 2021-12-14
  • 2022-01-19
  • 2021-08-04
  • 2022-01-22
猜你喜欢
  • 2021-05-06
  • 2021-05-02
  • 2021-09-03
  • 2021-12-09
  • 2022-03-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案