关于java静态变量取值的问题。
答案:3 悬赏:10 手机版
解决时间 2021-04-06 23:43
- 提问者网友:黑米和小志
- 2021-04-06 18:12
我在AAA类中声明了一个静态变量,并在一个方法中给静态变量赋值,main方法中计时器持续调用这个方法。启动AAA类后,在BBB类中我要获取AAA类中的这个静态变量,但得到的是null。我应该怎么取得这个静态变量。
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
public class AAA {
public static ArrayList strs;
public void test(){
strs=new ArrayList();
strs.add("a");
strs.add("b");
}
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask (){
@Override
public void run() {
new AAA().test();
System.out.println("qqqq~~"+strs.size());
}
};
timer.schedule (task,0L, 3000L);
}
}
import java.util.ArrayList;
public class BBB {
public ArrayList ds(){
return AAA.strs;
}
public static void main(String[] args) {
System.out.println(new BBB().ds());
}
}
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-04-06 19:24
直接给值给str变量
package test1;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
public class AAA {
public static ArrayList strs = test();
public static ArrayList test(){
strs=new ArrayList();
strs.add("a");
strs.add("b");
return strs;
}
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask (){
@Override
public void run() {
new AAA().test();
System.out.println("qqqq~~"+strs.size());
}
};
timer.schedule (task,0L, 3000L);
}
}
package test1;
import java.util.ArrayList;
public class BBB {
public static void main(String args[]){
System.out.println(new BBB().ds());
}
public ArrayList ds(){
return AAA.strs;
}
}
全部回答
- 1楼网友:几近狂妄
- 2021-04-06 21:25
java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为成员变量 可以那么说: 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。 注意几点: 中初始化的顺序: 加载类; 静态变量初始化; 静态块;【其只能调度静态的,不能调度非静态的】 成员变量; 构造方法;
- 2楼网友:舊物识亽
- 2021-04-06 20:05
把AAA类的main方法放到BBB类的main法中。你两个main方法相当于启动两个程序,两个程序之间不共享内存,BBB类的main方法启动时不会调用AAA的test方法,也就没有初始化静态变量,所以一直是null
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯