日期:2014-05-20  浏览次数:20734 次

关于一段java代码的小问题
publick class BlockDemo{
String name;
static int age ;
static{age=18;
String name="Eric";
System.out.println("name:"+name+",age:"+age);
}
public static void main(String[] args)
(BlockDemo bd=new BlockDemo();
System.out.println("name:"+bd.name+",age:"+age);}}


------解决方案--------------------
前一个打印的是局部变量的值
------解决方案--------------------
lz你想要问什么。
------解决方案--------------------
LZ 没有说明什么问题呀
------解决方案--------------------
Java code


    static
    {
        age = 18;
        String name = "Eric";
        System.out.println("name:" + name + ",age:" + age);
    }

------解决方案--------------------
问静态块?
------解决方案--------------------
静态块是最先执行的
------解决方案--------------------
探讨

引用:

前一个打印的是局部变量的值
分析一下结果吧

------解决方案--------------------
好像缺少括号
------解决方案--------------------
类体的定义包括成员变量的定义和方法的定义,并且成员变量又分为实例变量和类变量,用static修饰的变量是类变量;实例变量和类变量的区别:类变量是与类相关的数据变量,也就是说,类变量是和该类创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其他对象的类变量。因此,类变量不仅可以通过某个对象访问,也可以直接通过类名访问。实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的这个实例变量;实例变量可以通过对象访问,不能使用类名访问。
------解决方案--------------------
探讨

引用:

引用:

前一个打印的是局部变量的值
分析一下结果吧

1、首先类加载器加载.class文件。
2、然后完成static初始化,如果有。
3、为对象分配内存空间
4、将分配的内存空间清零
5、初始化类字段(数据成员)。按照定义的顺序依次初始化
6、调用构造器的方法

------解决方案--------------------
貌似class前面的public都错了,写成了publick
------解决方案--------------------
参与一下