jabc连接数据库,编写工具类的问题

  1. InputStream in = dbUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
    Properties prop = new Properties();
    prop.load(in);

2.
static {
InputStream in = dbUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties prop = new Properties();
try {
prop.load(in);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

为什么第一个代码要放在代码块里,prop才可以调用load方法?

静态代码块只在加载类时加载一次,类的变量在每次调用构造方法时都会加载一次。这样就避免了多次load

你的理解是错的,不是InputStream in = dbUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");必须放到static代码块才能load。
而是整个static代码块会提前加载,且只加载一次。

类里面有属性和方法;在第一个里面
前面两行如果不放在代码块里,可以当做是类的属性定义,
第三行 prop.load(in); 这是啥玩意儿,又不是属性,又不是方法函数

static俗称静态代码块,当你需要调用这个类的某一属性或者某一方法,在调用之前,会先执行静态代码块的内容,之后再去执行你所调用的属性或者方法。

看你说的,这应该是一个输入流,那么调用这个类的目的应该是用来写入一些东西,所以把它放到static块中,会在你调用方法时,自动打开流,当你用完时,您需要手动关闭一下流。