谁能讲的明白就送分,共同探讨一下关于static。 这只是一种规范,没什么其他的,你可以这样理解。对于static的成员,我们都知道是他是属于类的,因此与这个类的对象没有关系,所以无论这个类是否是null,都可以调用类的static 函数 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看来你对static还不大明白,我只知道,肯定能这样用,至于为什么那就是static的用法。你好好看看有关static部分的java我想你能看懂的。 http://www.csdn.net/expert/topic/587/587079.xml?temp=.7879602 因为static是属于类的而不是属于蒙一个对象,所以,系统在调用static函数时不回去验证对象是不是为NULL,因为他现在类的时候初始化了(即已经分配了地址空间了),而不是在对象调用的时候,才初始化所以,系统是能找到其地址的,并能调用属于类调用而不是对象调用明白了吗?给分给分,^-^ processorA().processorB(); 编译时:编译器发现processorA()的返回类型是Q1 Q1的processorB()是static,不需要把processorA()返回的对象传递给processorB(),所以不会抛出NullPointerException((Q1)null).processorB();一样可以正常运行 都说了这么多了,来晚了:(一切都是因为static被它修饰的对象是存放在内存中的静态存储区当中,而不是堆载中.它在你还没有执行main以前就已经被初始化了,并一直存放在静态存储区之中,它只有一个拷贝,不属于你的某一个实例,而属于该类的所有实例共享之.static方法的最大特征就是不必实例化它所在的类就可以直接调用它,为什么??因为编译器早就已经在静态存储区里面加载了它.常用的NEW是动态实例创建,在堆里面加载对象实例在载里面分配指针,它的指针必须指向一个对象才有意义(所以不允许为NULL).而现在static方法他奶奶的早就在静态存储区中创建好了,直接区调就是了,还在乎什么指针??? Q1.processorB(); 奶奶的,今天怎么老碰到问static的??!!到C++那边看看去...要加分啊!!! static定义的字段,不管你的类有没有实例化,是都可以访问的. static对象存放在内存中的静态存储区而不是堆载中 谢谢各位!wangtaoyy(匕吐匕) 给的例子很有说服力:((Q1)null).processorB();一样可以正常运行现在已经很清楚了,开始给各位加分了。 Struts2下的Ajax异步验证问题 gc 学生的信息存储在文件中 菜鸟发问,,,大侠们帮帮忙啊!! 为什么windows下没法安装jre 请大家看看这段程序,谢谢了 我用java执行我包中的类可是确找其他的类 急。。。在servlet如何连接到oracle(不通过odbc) jdk安装完毕还要怎么设置?怎么用起来怪怪的? 关于多态。。 学以至用,请帮忙! 哪里有JDBC for MySQL 驱动程序下载??(100)
函数时不回去验证对象是不是为NULL,因为他现在类的时候初始化了(即已经分配了地址空间了),而不是在对象调用的时候,才初始化
所以,系统是能找到其地址的,并能调用属于类调用而不是对象调用
明白了吗?
给分给分,^-^
processorA().processorB();
编译时:编译器发现processorA()的返回类型是Q1
Q1的processorB()是static,不需要把processorA()返回的对象传递给processorB(),所以不会抛出NullPointerException((Q1)null).processorB();一样可以正常运行
一切都是因为static被它修饰的对象是存放在内存中的静态存储区当中,而不是堆载中.它在你还没有执行main以前就已经被初始化了,并一直存放在静态存储区之中,它只有一个拷贝,不属于你的某一个实例,而属于该类的所有实例共享之.static方法的最大特征就是不必实例化它所在的类就可以直接调用它,为什么??因为编译器早就已经在静态存储区里面加载了它.常用的NEW是动态实例创建,在堆里面加载对象实例在载里面分配指针,它的指针必须指向一个对象才有意义(所以不允许为NULL).而现在static方法他奶奶的早就在静态存储区中创建好了,直接区调就是了,还在乎什么指针???
Q1.processorB();
奶奶的,今天怎么老碰到问static的??!!到C++那边看看去...要加分啊!!!
wangtaoyy(匕吐匕) 给的例子很有说服力:((Q1)null).processorB();一样可以正常运行
现在已经很清楚了,开始给各位加分了。