如下:
一种带有static
static{
//代码内容
//........
//代码结束
}还有就是花括号前面啥也没有的。
{
//代码内容
//........
//代码结束
}问题:
1.还有什么其他情况么?
2.这代表什么意思?谢谢高手们抽空解答!
一种带有static
static{
//代码内容
//........
//代码结束
}还有就是花括号前面啥也没有的。
{
//代码内容
//........
//代码结束
}问题:
1.还有什么其他情况么?
2.这代表什么意思?谢谢高手们抽空解答!
以一对花括号作为域的标识
代表一段代码的开始和结束
前面有static表示一个静态块
* @param args
*/
public static void main(String[] args) {
PropertyUtil test01 = new PropertyUtil();
System.out.println(test01.getProperty("libowifi"));
}
/*
* 获取属性文件的值
*/
private static final Logger logger = Logger.getLogger(PropertyUtil.class);
private static Properties properties;
static {
// 加载属性文件
try {
InputStream inputStream = PropertyUtil.class.getClassLoader().getResourceAsStream("haixi.properties");
try {
properties=new Properties();
properties.load(inputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
inputStream.close();
}
} catch (Exception e) {
logger.error(e.getMessage());
}
} public static String getProperty(String key) {
return properties.getProperty(key);
}
}看到的原文例子。
也见过仅仅只有花括号的代码{}。
但不明白为什么?谢谢指点。
//代码内容
//........
//代码结束
}
静态代码域,在类的加载的时候调用一次,整个生命周期只会调用一次。
{
//代码内容
//........
//代码结束
}
普通代码域,在类的每个对象创建的时候调用。代码域中定义的变量都是局部的,只有域中的代码可以调用。
{
add("hello");
add("world");
}
};
静态代码块只会执行一次,一般会用来初始化一些值,并且在所有对象中全局共享。
{}非静态代码块,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。
举个例子:
public class TestStaticCon { public static int a = 0;
static {
a = 10;
System.out.println("父类的非静态代码块在执行a=" + a);
}
{
a = 8;
System.out.println("父类的非静态代码块在执行a=" + a);
}
public TestStaticCon() {
this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法
System.out.println(a);
System.out.println("父类无参构造方法在执行a=" + a);
}
public TestStaticCon(String n) {
System.out.println(n);
System.out.println(a);
}
public static void main(String[] args) {
TestStaticCon tsc = null;
System.out.println("!!!!!!!!!!!!!!!!!!!!!");
tsc = new TestStaticCon();
}/*Output:
父类的非静态代码块在执行a=10
!!!!!!!!!!!!!!!!!!!!!
父类的非静态代码块在执行a=8
a在父类带参构造方法中的值:10
8
8
父类无参构造方法在执行a=8
*/
} public class TestStaticCon { public static int a = 0;
static {
a = 10;
System.out.println("父类的非静态代码块在执行a=" + a);
}
{
a = 8;
System.out.println("父类的非静态代码块在执行a=" + a);
}
public TestStaticCon() {
this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法
System.out.println(a);
System.out.println("父类无参构造方法在执行a=" + a);
}
public TestStaticCon(String n) {
System.out.println(n);
System.out.println(a);
}
public static void main(String[] args) {
TestStaticCon tsc = null;
System.out.println("!!!!!!!!!!!!!!!!!!!!!");
tsc = new TestStaticCon();
}/*Output:
父类的非静态代码块在执行a=10
!!!!!!!!!!!!!!!!!!!!!
父类的非静态代码块在执行a=8
a在父类带参构造方法中的值:10
8
8
父类无参构造方法在执行a=8
*/
}
我只是想知道其中的花括号的意思:
{}
至于vector list hashtable 什么的好像跑题了吧
static{
//代码内容
//........
//代码结束
}
静态代码域,在类的加载的时候调用一次,整个生命周期只会调用一次。
{
//代码内容
//........
//代码结束
}代码域中定义的变量都是局部的,只有域中的代码可以调用。