JAVA static修饰变量后,是不是在是不是有默认值

staticintx;这是的变量是不是有默认值????就是这样classTest{staticintx;staticvoidsop(){System.out.printl... static int x;

这是的变量是不是有默认值????
就是这样

class Test{
static int x;
static void sop(){
System.out.println(x);
}
public static void main(String[] args){
Test t = new Test();
t.sop();
}
}

这个调用SOP能打印出x的值 是0 我就想问问这个0是怎么回事
展开
 我来答
万俟乐水
2012-06-02 · TA获得超过210个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:79.5万
展开全部
没有默认值,只不过想要调用(或引用)这个变量,必须也被静态的static修饰,如静态方法,静态块,例如public static void add(){
x=5;
}
或者在静态块中static{
x=3;
},如果不是用静态static修饰过的方法,快,变量都是不能调用其他非静态方法,快,变量,同时这些静态方法,快,变量都不具有默认值,除非你用final强制赋予一个值
不过按照楼主的说法,非要说它有值的话,确实是0,不过是针对byte,long,short,int,如果是String,值为null,float/double型,值为0.0,如果是char,没值
tighterman
推荐于2017-12-16 · TA获得超过2780个赞
知道答主
回答量:631
采纳率:0%
帮助的人:198万
展开全部
仔细的分析,其实的确是有默认值了,为啥呢,因为x既然被声明为static,那么它就一定是某类的一个属性,而不是局部变量。因为局部变量是不可以用static来修饰的。那么既然是类属性,在类被加载的时候,那些没有被初始化过的属性,就会被赋予默认值,int型的应该是0吧。
追问
全局变量在类被加载的时候就会赋于默认值吗??
追答
不是全局变量会被赋予默认值,而是类的属性会被赋予默认值,也就是那些定义在类内部、方法外部的变量,不管是不是static,都会被赋值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小林望北
2012-06-02 · TA获得超过101个赞
知道答主
回答量:119
采纳率:0%
帮助的人:32.4万
展开全部
好像在方法的外面定义的变量是有默认值的,也就是全局变量,你自己试试,定义一个变量再print出来看看有没有

这个0就是默认值啊

int的默认值是0
char的默认值是空字符
boolean的默认值是false
String的默认值是null
你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恩情恰似流年6
2012-06-02 · 超过14用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:36.5万
展开全部
没有默认值,只是定义了一个变量!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-06-02
展开全部
static 属于全局,也就是类的属性 和方法,换句话说 一个类,不管有多少个实例,却只有一个全局变量 static int x=1; static int x=2; 默认值是可以变换滴
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式