关于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