public class D{
static int a=4;
static void map(){
D c=new D();
}
public static void main(String args[]){
System.out.println(D.a);
map();
}
}
我搞不懂为什么这样也行?
结果为 4.
static int a=4;
static void map(){
D c=new D();
}
public static void main(String args[]){
System.out.println(D.a);
map();
}
}
我搞不懂为什么这样也行?
结果为 4.
解决方案 »
- list集合问题,希望有人能解决
- eclipse语言包下载地址是多少(找不到)?
- 怎么将带特殊字符的字符串存入sqlserver的某个字段(Java)?
- 我最近在做一个用 javacc 做 sql 语法分析树 的 东西 ,
- 我想学习java socket编程。不知道在哪里可以找到比较多的资料呢?
- 请大牛看看我下面的代码,是一个下载文件的Servlet,前几天好用,今天突然出问题了
- 帮我看看这道题
- 能不能用JAVA自己写输入法呀?
- 通过JNI在C++中怎样处理一个jchararray.......
- 几个简单的问题,高分必送。
- 用xfire调用webserver时报null,求解!!
- 高手进,请问如何自动生成?
a是D类的静态属性静态属性就这么用,有什么问题吗?
1.静态变量是归这个类所有的,无论这个类被实例化多少次,这个变量只有一个,就是说不存在this.a这种用法;
2.静态变量因为直接附属于这个类,所以,虚拟机在编译的时候就已经给它一块内存了,Java语法规定,静态变量可以直接用类名访问,为什么可以这样规定,因为世界上只有一个a,无论实例化多少次,所以,干嘛还要那么麻烦的用对象来访问呢?其次,LZ发的代码中,main方法在类D中,main方法虽然特殊,但也是个方法,而且要注意,是个静态方法,静态方法的特点:在同一个类里,静态方法只能调用静态方法,如果要调用普通方法,那么就要new出对象LZ的代理里,如果map方法是个普通方法,那么就不能那么写,而要new D().map();
我也是个Java初学者,以上为自己理解的总结,有错误的话,请大家指出,共同进步