菜鸟求教:这种static写法是什么意思
class A
{
......
static final void add(String entity, int value)
{
.......
}
......
static
{
add( "  ",160)
}
}
请问:(1)第二个static这样写是什么意思?
(2)在html实体字符里 "  "与160之间是什么关系?
------解决方案--------------------你没有把add的方法体内的东西写出来,回答不了你 "  "与160之间有什么关系;
只知道 "  "在html中是空格。。。
第二个static的用噶也没有看过。。。是内部类?不清楚。。。等高手。。。
------解决方案--------------------第二个static是静态块,类加载(不管是不是需要实例化)的时候会先调用到。
------解决方案--------------------static块内的代码只在JVM第一次加载该类的时候运行
首先调用的是static静态快的代码,然后调用启动方法.而static块的执行顺序是由代码的编写顺序执行的过程.
------解决方案--------------------static
{
add( "  ",160)
}
被成为静态块 它在类加载的时候就会执行 通过它调用add方法 执行方法里的语句
------解决方案--------------------哦,又学到一点了
------解决方案--------------------匿名内部类,不知道是不是
------解决方案--------------------第二个static是静态代码块
------解决方案--------------------静态块里的代码不一定是第一次被加载时执行,
确切的说应该是第一次实例化的时候执行~
因为他的执行和类的加载方式有关:
看看下面的:
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()!
从结果很明显看出,静态块的执行是类第一次实例化的时候进行的~~~~~
而 不是 大家常说的第一次加载类的时候执行的!!!!!
------解决方案--------------------楼上的都说的很清楚了!
顶下!