我正在研究java编程,我对常量有点困惑.从我到目前为止所读到的常量是最终的,不能像变量一样重新分配新的值.但是,当我使用Calender类时,set方法似乎改变了一个常量字段.例如:
Calendar cal = Calendar.getInstance();
System.out.println("The year is " + cal.get(Calendar.YEAR));
cal.set(Calendar.YEAR, 2001);
System.out.println("The year is " + cal.get(Calendar.YEAR));Run Code Online (Sandbox Code Playgroud)
如果在类中Calendar.YEAR声明final了该字段,Calendar那么为什么我可以使用set方法将其更改为其他值?
我目前正在使用Murach学习php(该书于2010年出版).其中一个练习有这些陈述:
<label>Investment Amount:</label> <input type="text" name="investment"
value="<?php echo $investment; ?>"/><br />
<label>Yearly Interest Rate:</label> <input type="text" name="interest_rate"
value="<?php echo $interest_rate; ?>"/><br />
<label>Number of Years:</label> <input type="text" name="years"
value="<?php echo $years; ?>"/><br />
Run Code Online (Sandbox Code Playgroud)
整个要点是上面的值属性与echo语句具有的变量最初没有被赋值任何值,因此根据本书,文本框应该是空的.但是稍后在练习中,将再次调用同一页面,变量现在将具有值,因此它们将打印在文本框中.这是本书的解释:
这些echo语句显示包含用户先前在表单中输入的数据的变量.但是,第一次显示此页面时,这些变量将不包含数据,因此文本框将为空.
但是,在第一次运行程序时,文本框实际上不是空的:

自从5年前出版这本书以来,我猜他们当时工作但现在没有,或者代码本身是错误的.任何人都可以告诉我这是否只是过时的代码或者它真的打破了吗?我如何修复它以使用null变量获得空文本框的预期效果?
谢谢!