Java中static申明后的变量有什么用? 可以在声明为static的方法中使用,其它类型的变量只能在对象被实例化后才能使用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 声明为static的变量在定义的地方被初始化,并且只能初始化一次。 也就是说如果你在一个方法里定义了一个static变量,当你第二次调用该方法时,该变量不被再次初始化。 hslinux(幻世龙),你不要胡说好不好。不知道就不要发言,最好研究研究java规范。 我不知道对不对哈:声明为static的话就只占用一份内存空间,不会改变。而且只是在class被装载的时候被初始化一次。可以在声明为static的方法中使用(我抄袭的)可以由所属的class调用 关于static对象的调用:1、java 找到Mouse.class,发现Mouse是由Rodent继承来的,就去找Rodent,然后装入Rodent,装入后,发现Rodent中有static属性即i,所以就给i初始化,打印出"initialize rodent static iRodent"2、java装入Mouse,发现其中有static属性c1,所以就给c1初始化,准备执行new Cat("c1 static"); 这时,它发现Cat中也有static 属性,所以要先初始化Cat中的i, 所以就打印"initialize cat static icat",而后,因为要初始化Cat的对象,所以在执行构造前,要先初始化这个对象的所有属性,于是j被初始化,打印出"initialize cat ns jcat",然后,执行Cat的构造,调用Cat(String s), 打印出 cat c1 static,至此Mouse中的c1初始化完成3、java开始执行Mouse.main(),打印出"main start"4、执行System.out.println(c1.j);,打印出225、执行 System.out.println(c1.i); 打印出266、执行new Mouse(),在执行这句前,发现Mouse从Rodent继承,去先构造Rodent的对象,初始化Rodent对象里面的属性j,于是打印出"initialize rodent ns jRodent",而后调用Rodnet的构造,打印出"Rodent initialize",再回到Mouse中,先构造一个Mouse对象,为对象分配内存,而后初始化属性,于是Mouse中的属性c2就被初始化了,即为c2构造一个Cat对象,这时Cat中的属性j先被初始化,于是打印initialize cat ns jcat,再然后,调用Cat的构造,打印出Cat c2 ns,最后,回到MOUSE中,调用Mouse的构造,打印出Mouse initialize7、所以结果是:Initialize rodent static i rodentinitialize cat static i catinitialize cat ns j catcat c1 staticmain start2226initialize rodent ns j rodentrodent initializeinitialize cat ns j catcat c2 nsmouse initialize--------------------------------------------------------------------------------class Rodent{ Rodent(){ System.out.println("Rodent initialize"); } static int prt(String s){ System.out.println(s); return s.length(); } static int i=prt("initialize rodent static iRodent"); int j=prt("initialize rodent ns jRodent");} class Cat{ static int prt(String s){ System.out.println(s); return s.length(); } Cat(String s){ System.out.println("cat"+s); } static int i=prt("initialize cat static icat"); int j=prt("initialize cat ns jcat");} public class Mouse extends Rodent{ static Cat c1=new Cat("c1 static"); Cat c2=new Cat("c2 ns"); public static void main(String[] args) { System.out.println("main start"); System.out.println(c1.j); System.out.println(c1.i); new Mouse(); } Mouse(){ System.out.println("Mouse initialize"); }} 考研还是工作 这个问题困扰着许多人 现在轮到我了 希望大家能给点建议 Java中怎么实现取各个位上的值? 金山词霸的API 请教一下这程序有哪些地方不足 请问可不可以在java中调用c语言写的自定义函数啊? 贵求以下两题的代码,急! 非常感谢! 【求助】数据库连接问题,登录界面不能实现???(有源码) 关于TOMCAT 归来献礼:最容易配置的免费的java applicationserver+webserver+Database是什么? Java实现桌面效果 关于使用JDK问题!!! GridControl
声明为static的话就只占用一份内存空间,不会改变。
而且只是在class被装载的时候被初始化一次。
可以在声明为static的方法中使用(我抄袭的)
可以由所属的class调用
class Rodent{
Rodent(){
System.out.println("Rodent initialize");
}
static int prt(String s){
System.out.println(s);
return s.length();
}
static int i=prt("initialize rodent static iRodent");
int j=prt("initialize rodent ns jRodent");
}
class Cat{
static int prt(String s){
System.out.println(s);
return s.length();
}
Cat(String s){
System.out.println("cat"+s);
}
static int i=prt("initialize cat static icat");
int j=prt("initialize cat ns jcat");
}
public class Mouse extends Rodent{
static Cat c1=new Cat("c1 static");
Cat c2=new Cat("c2 ns");
public static void main(String[] args) {
System.out.println("main start");
System.out.println(c1.j);
System.out.println(c1.i);
new Mouse();
}
Mouse(){
System.out.println("Mouse initialize");
}
}