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

关于static变量的用法
现在要从多个线程取A中的某个变量c,我的做法是使用static方法取c(因为new   A实在不方便),所以我把c定义成了static变量,但是c又是在构造函数里面赋值的,请问这么写好不好?有没有别的好办法?

举例:
class   A{
      private   static   String   c;

      public   A(String   c1){
                      this.c   =c1;
                                }

      public   static   String   getparam(){
                      return   c;
                          }
}
...........线程里面getparam()


------解决方案--------------------
private String c;
------解决方案--------------------
static 是所以程序一个东西,满足你的需求就可以了
------解决方案--------------------
能实现就是好方法~~~

只要能抓到老鼠的猫,就是好猫。
------解决方案--------------------
我觉得没必要用static修饰
直接 private String c 就可以了
------解决方案--------------------
这样不好!
因为你用A.getparam()的时候,因为你没有调用构造函数呀!你的c就是没有被赋值的!所以getparam()得到的返回值是0;
你可以这样写!
public static String getparam(String c1){
return c=c1;
}
调用的时候直接 A.getparam( " "); 就ok了!

------解决方案--------------------
恩~~这么用啊
------解决方案--------------------
public static class A{
String c;

public A(String c1){
this.c =c1;
}

public static String getparam(){
return A.c;
}
}

------解决方案--------------------
private String c
更好..
------解决方案--------------------
static 变量可以在构造函数里面赋值吗?static变量不是只能在static函数里面操作的吗?
------解决方案--------------------
用private String c就行了。
------解决方案--------------------
那你就用static方法赋值
public static void setC(String s){
c = s;
}

------解决方案--------------------
private static final String out = " ";
------解决方案--------------------
如果是属于A的最好是声明为final

------解决方案--------------------
这是一个常用的方法,这样做不错.但是,你说的这句话: "(因为new A实在不方便) "
可能导致你的想法无法实现.因为只有new一个A,这个变量才会有初值.
------解决方案--------------------
静态变量好像不能那样赋值吧?
------解决方案--------------------
不能的 ,static的变量只要声明就在内存中有数值, int的默认为0,string的魔问为null,所以这个地方你传递的参数是貌似就不对了把
------解决方案--------------------
用不用static关键是看,所有对象是不是共用这个数据,如果共用,也就是和具体对象无关的话,就用static,否则不能用static