返回语句后的java意外输出
我有以下代码:
public class MainClass {
static int someStaticVariable = 0;
public static void main(String[] args) {
MainClass obj = new MainClass();
obj.someInstanceMethod();
System.out.println("Count in main method " + someStaticVariable);
}
public int someInstanceMethod() {
String someString = "line1\nline2\n";
System.out.println("Count in someInstanceMethod method "
+ (someStaticVariable + someString.split("\r\n|\r|\n").length));
return (someStaticVariable + someString.split("\r\n|\r|\n").length);
}
}
问题:为什么输出是:
Count in someInstanceMethod method 2
Count in main method 0
而非
Count in someInstanceMethod method 2
Count in main method 2
以及为什么它在someInstanceMethod中打印到Count in someInstanceMethod method 2
,然后返回0
,然后在main方法中打印0
# 1 楼答案
您没有为
someStaticVariable
分配任何内容;您忽略了someInstanceMethod
的返回。试一试或者,您可以在方法本身中指定它
# 2 楼答案
问题是您没有篡改
someStaticVariable
您只需打印出
someStaticVariable
(即0)和someString.split("\r\n|\r|\n").length
之和您需要做的是分配: