返回信息流求问,感觉应该是关于内存中的问题。在一个方法中新建一个对象是可以的,但是如果是在if语录后就会报错,求大神解答,都不知道该怎么百度这个问题。
这是一条镜像帖。来源:北邮人论坛 / java / #57864同步于 2017/10/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[小白求解答]
Metro
2017/10/27镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
不要把c++的陋习带到Java里面来,if后面不跟大括号会被拖出去砍头的
http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
As per Java spec, You cannot declare a local variable when there is no scope.
万……万一人家是写py或者go的呢……
【 在 dss886 的大作中提到: 】
: 不要把c++的陋习带到Java里面来,if后面不跟大括号会被拖出去砍头的
: http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
: As per Java spec, You cannot declare a local variable when there is no scope.
public static void main(String[] args){
int i=0;
if(i<6)
i++;
else i--;
}
又试了一下,以上代码是可行的。好像明白了,是因为刚才那句 Node node=new Node(3)本质上不是一个语句吧,如果if后面只跟一条语句,加不加大括号应该是没差别的。但是好像又出现了一个问题,Node node=new Node(3)这句不像i++;一样是一个简单的赋值语句么?有点更晕了。。。。
【 在 dss886 的大作中提到: 】
: 不要把c++的陋习带到Java里面来,if后面不跟大括号会被拖出去砍头的
: http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
: As per Java spec, You cannot declare a local variable when there is no scope.
错了,Node node=new Node(3); 是一个正常的语句
You cannot declare a local variable when there is no scope
这句话的翻译是「你不能在没有作用域的时候定义一个变量」,
「定义一个变量」,能理解伐?
另外,如果是刚开始接触Java,请牢记:
在「任何」情况下都不应该省略if后面的大括号
【 在 Metro 的大作中提到: 】
: public static void main(String[] args){
: int i=0;
: if(i<6)
: ...................