有时会因mathematical
操作而产生属性。在声明这些属性时,是否会编写数学运算?例如,我需要编写一个代表class
的{{1}},其属性具有自该时刻午夜起的秒数。我会这样声明:
moment in time
或者我需要将其声明为
private long _secFromMid;?
在宣布private long _secFromMid = ((_hour*60*60) + (_minute*60) + _second);?
时,我们是否有过数学运算?
答案 0 :(得分:0)
您可以在初始化中进行任何计算。 Java编译器足够聪明,可以按顺序排列。
唯一的限制是,如果已声明已声明,则只能使用其他属性。
请参阅此working example。
class Test
{
private String fooBar = foo + "bar"; // inverted here
private String foo = "foo";
private int x = 10;
private int y = x * 10;
private MyInt my = new MyInt(5);
private int z = x * my.get();
public static void main (String[] args) throws java.lang.Exception
{
Test t = new Test();
System.out.println(t.foo);
System.out.println(t.fooBar);
System.out.println(t.x);
System.out.println(t.y);
System.out.println(t.z);
}
}
例如,如果我将代码更改为:
Compilation error time: 0.1 memory: 320576 signal:0
Main.java:19: error: illegal forward reference
private String fooBar = foo + "bar";
^
1 error
这将导致编译错误:
var myScript = "window.myScript= window.myScript|| {}; (function() { function myScript(foo) { //do stuff } })(window);"