java 中的问题,若能全部解释,给30分,若能让人全懂,再加10分

两个java不懂的题目,望解释清楚:classHasStatic{privatestaticintx=100;publicstaticvoidmain(String[]a... 两个java不懂的题目,望解释清楚:
class HasStatic {
private static int x=100;

public static void main(String[] args) {
HasStatic hs1=new HasStatic();
hs1.x++;
HasStatic hs2=new HasStatic();
hs2.x++;
hs1=new HasStatic();
hs1.x++;
HasStatic.x--;
System.out.println("x="+x);

}

}
为什么这个最后的结果为102???
还有:
class StaticStuff {

static int x=10;
static{x+=5;}
public static void main(String[] args) {
System.out.println("x="+x);
}
static {x/=3;}
}
这个题目很难让我这种java初学者懂得!!为什么这么写可以, 不是说变量一般要写到主方法里吗??
展开
 我来答
zhbf5156
推荐于2017-11-23
知道答主
回答量:26
采纳率:0%
帮助的人:26.3万
展开全部
先给你解答第一个问题
不写在方法里面的变量叫做成员变量,也叫全局变量,定义了成员变量后,在同一个类里的每个方法都可以使用,而不局限在单个方法里,你的这个成员变量是用static修饰的,所以它是一个类变量,类变量资源共享,所以在第一次实例化后x+1后x=101,第二次实例化hs2.x++就是101+1=102,之后的hs1又实例化一次做++操作x=103,最后做--操作,最终结果为102。
第二个问题
这里你应该是指static{x+=5}吧,这个static表示这是个静态块,当虚拟机加载该类时,会先初始化它,有点类似构造方法,题中进行了两次static{ ... }操作,依次计算后x的值为3,最后输出了3

很简单的问题,写的有点繁琐,希望你会看懂
左红509465097
2010-12-20
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
类HasStatic 中的私有变量x定义为100,函数中对于类又定义了2个方法hs1和hs2,并且在2个方法中都是对x进行自加,而最后调用的是hs1=new HasStatic();在这里又加了一次,后面减了一次,最后输出的时候也是加一次,结果就是102了。
变量有局部变量和全局变量,各自的定义区域不同。不在主方法的那个就是局部变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式