大括号括起来的语句怎么执行出这样的结果?
就是下面这个小程序,1.为什么给staticint赋值时要用{}括起来,否则报错,(我也知道要在声明时就赋值,呵呵),括起来代表什么意思?2.为什么运行Example的时...
就是下面这个小程序,
1.为什么给static int赋值时要用{}括起来,否则报错,(我也知道要在声明时就赋值,呵呵),括起来代表什么意思?
2.为什么运行Example的时候输出三个数都是11?
.........................................................
##Person.java
public class Person{
private static int staNum;
//这一句为什么不加{}的话会报错:需要 <标识符>
{staNum=10;}
public Person(){
staNum++;
System.out.println(getStaNum());
}
public int getStaNum(){
return(staNum);
}
}
..........................................................
..........................................................
###Example.java
public class Example{
public static void main(String[] args){
Person person=new Person();
Person p1=new Person();
Person p2=new Person();
}
}
............................................................
这个...汗...2楼的写错了,类名是Person,或者是我没理解你的意思。2楼的高手能说清楚些吗?static{}是什么?不加static的{}算什么?
楼下3楼的hxc198139朋友,结果是11,不是1,说明{staNum=10;}还是有用的。
不过你说的 在方法外类内,不能有除声明外的可执行语句。我突然想到是不是{}括起来就是可执行了?明显是每次初始化都运行了一遍赋值,...真的晕了,不明白类内的{}到底是什么意思。
所以问题1还是没有答案,编译器是怎么理解{}的?
希望懂行的朋友来说说 展开
1.为什么给static int赋值时要用{}括起来,否则报错,(我也知道要在声明时就赋值,呵呵),括起来代表什么意思?
2.为什么运行Example的时候输出三个数都是11?
.........................................................
##Person.java
public class Person{
private static int staNum;
//这一句为什么不加{}的话会报错:需要 <标识符>
{staNum=10;}
public Person(){
staNum++;
System.out.println(getStaNum());
}
public int getStaNum(){
return(staNum);
}
}
..........................................................
..........................................................
###Example.java
public class Example{
public static void main(String[] args){
Person person=new Person();
Person p1=new Person();
Person p2=new Person();
}
}
............................................................
这个...汗...2楼的写错了,类名是Person,或者是我没理解你的意思。2楼的高手能说清楚些吗?static{}是什么?不加static的{}算什么?
楼下3楼的hxc198139朋友,结果是11,不是1,说明{staNum=10;}还是有用的。
不过你说的 在方法外类内,不能有除声明外的可执行语句。我突然想到是不是{}括起来就是可执行了?明显是每次初始化都运行了一遍赋值,...真的晕了,不明白类内的{}到底是什么意思。
所以问题1还是没有答案,编译器是怎么理解{}的?
希望懂行的朋友来说说 展开
3个回答
展开全部
public class People {
private static int staNum = 10;
// 这一句为什么不加{}的话会报错:需要 <标识符>
//{staNum = 10;}
public void Person() {
staNum++;
System.out.println(getStaNum());
}
public int getStaNum() {
return (staNum);
}
}
有2个错误:
1、变量不能在方法外赋值,但可以在定义的时候设置初值;
2、Person不是People类的构造函数,所以必需有修饰符修饰该类。
PS补充:
如果非在定义静态变量的时候不设置初值,在方法外也可以使用{}来设置,如你遇到的问题只能用{}修饰staNum=10;
其实{}的全写形势为:
Static{
。。。
}
private static int staNum = 10;
// 这一句为什么不加{}的话会报错:需要 <标识符>
//{staNum = 10;}
public void Person() {
staNum++;
System.out.println(getStaNum());
}
public int getStaNum() {
return (staNum);
}
}
有2个错误:
1、变量不能在方法外赋值,但可以在定义的时候设置初值;
2、Person不是People类的构造函数,所以必需有修饰符修饰该类。
PS补充:
如果非在定义静态变量的时候不设置初值,在方法外也可以使用{}来设置,如你遇到的问题只能用{}修饰staNum=10;
其实{}的全写形势为:
Static{
。。。
}
展开全部
1、在方法外类内,不能有除声明外的可执行语句。要么声明时赋值(不赋默认为0),要么在方法内赋值。
2、你的两段代码不在同一程序界面中,运行Example时调用了三次Person的构造方法stuNum初始值为0,又有staNum++; 所以三个1。
3、{staNum=10;} 这句没用,可以删了
2、你的两段代码不在同一程序界面中,运行Example时调用了三次Person的构造方法stuNum初始值为0,又有staNum++; 所以三个1。
3、{staNum=10;} 这句没用,可以删了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那是结构体的写法吧。。。。
只有一个值,何必又用结构体呢
只有一个值,何必又用结构体呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询