class A
{
......
static final void add(String entity, int value)
{
.......
}
......
static
{
add(" ",160)
}
}
请问:(1)第二个static这样写是什么意思?
(2)在html实体字符里" "与160之间是什么关系?
{
......
static final void add(String entity, int value)
{
.......
}
......
static
{
add(" ",160)
}
}
请问:(1)第二个static这样写是什么意思?
(2)在html实体字符里" "与160之间是什么关系?
只知道" "在html中是空格
第二个static的用噶也没有看过是内部类?不清楚等高手
首先调用的是static静态快的代码,然后调用启动方法.而static块的执行顺序是由代码的编写顺序执行的过程.
{
add(" ",160)
}
被成为静态块 它在类加载的时候就会执行 通过它调用add方法 执行方法里的语句
确切的说应该是第一次实例化的时候执行~
因为他的执行和类的加载方式有关:
看看下面的:
1,测试类:
package com.daniel.test;public class TestStatic {
static{
System.out.println("执行静态块!");
}
public void print(){
System.out.println("执行TestStatic.print()!");
}
}
2,主类:
package com.daniel.test;
public class StaticTest {
public static void main(String[] args) throws Exception {
StaticTest st = new StaticTest();
System.out.println("准备加载com.daniel.test.TestStatic...");
Class clazz = st.getClass().getClassLoader().loadClass("com.daniel.test.TestStatic");
System.out.println("加载com.daniel.test.TestStatic成功!");
System.out.println("准备实例化com.daniel.test.TestStatic...");
TestStatic ts = (TestStatic)clazz.newInstance();
System.out.println("实例化com.daniel.test.TestStatic成功!");
ts.print();
}
}3,执行结果:
准备加载com.daniel.test.TestStatic...
加载com.daniel.test.TestStatic成功!
准备实例化com.daniel.test.TestStatic...
执行静态块!
实例化com.daniel.test.TestStatic成功!
执行TestStatic.print()!
从结果很明显看出,静态块的执行是类第一次实例化的时候进行的~~~~~
而 不是 大家常说的第一次加载类的时候执行的!!!!!
这里有个例外情况,如果你调用类的静态方法,那么静态块的内容也会被调用,而不需要实例化对象。