问题内容: 最近有人问我这个问题。但是无法简明地解释究竟是什么将这两个概念区分开来。 例如 最终且不可变: 如果我现在写 我会收到编译器错误 不可变: 有用。 我认为这解释了它在应用中的一部分。但是我可以对这两个话题得到一个很好的,易于理解的解释吗? 问题答案: 意味着您不能将对象的引用更改 为指向另一个引用或另一个对象 ,但仍可以更改其状态(例如使用setter方法)。凡 不变 意味着对象的 实
(1)用来修饰一个引用 如果引用为基本数据类型,则该引用为常量,该值无法修改; 如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。 如果引用时类的成员变量,则必须当场赋值,否则编译会报错。 (2)用来修饰一个方法 当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。 (3)用来修饰类 当用f
问题内容: 在Java中,目的是什么做的关键字,并履行? 问题答案: 可用于标记变量“不可更改” 也可以使方法“不可替代” 也可以使类不是“可继承的”。即该类不能被子类化。 最后 在try / catch语句中用于“始终”执行代码 Java 7有一个新的try with resources语句 ,可用于自动关闭显式或隐式实现java.io.Closeable或java.lang.AutoClose
问题内容: 我有以下Java代码: 打印时结果为254,但我不知道此代码如何工作。如果&运算符只是按位运算符,那么为什么不生成字节而是取整数? 问题答案: 它设置为将8位放入的最低8位得到的(无符号)值。 诸如此类的必要原因是Java中的一种签名类型。如果你刚刚写过: 那么result最终将得到值ff ff ff fe而不是00 00 00 fe。另一个微妙之处在于,将&定义为仅对int值1进行操
问题内容: 似乎几乎没有人意识到这一点,但是Java中的“ thisreference”是最终的。在正常的编程天中,我认为可以通过在自己的类中重新定义此引用来重新定义整个实例: 为什么此引用在Java中是最终的? 问题答案: 问题不在于它是参考,而是它本身根本不是参考。是一个 关键字 ,“表示一个值,该值是对为其调用实例方法或默认方法的对象的引用”(JLS§15.8.3)。 此外,从可以重新分配变
问题内容: 可以解释一下AtomicLong的用途吗?例如,以下语句有什么区别? 问题答案: 这两个对象之间存在 显着 差异,尽管最终结果是相同的,但它们绝对是非常不同的,并且在非常不同的情况下使用。 在以下情况下使用基本对象: 您需要包装器类 您正在使用收藏夹 您只想处理对象,而不要处理基元(可以解决问题) 您使用以下情况: 您必须保证该值可以在并发环境中使用 您不需要包装器类(因为此类不会自动