Jdk的可变类和不可变类
primitive变量: boolean,byte, char, double ,float, integer, long, short
jdk的不可变类:jdk的java.lang包中 Boolean, Byte, Character, Double, Float, Integer, Long, Short, String.
StringBuffer 可变类
java.util.Date 可变类
1. 可变类和不可变类(Mutable and Immutable Objects)的初步定义:
可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容。
不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变类的实例一但创建,其内在成员变量的值就不能被修改。
2. 如何创建一个自己的不可变类:
所有成员都是private
不提供对成员的改变方法,例如:setXXXX
确保所有的方法不会被重载。手段有两种:使用final Class(强不可变类),或者将所有类方法加上final(弱不可变类)
如果某一个类成员不是原始变量(primitive)或者不可变类,必须通过在成员初始化(in)或者get方法(out)时通过深度clone方法,来确保类的不可变
转自:shixm
http://shixm.iteye.com/blog/297906
分享到:
相关推荐
综上所述,Java可变参数是Java语言中一个强大的特性,它简化了处理不定数量参数的方法定义,同时提供了良好的可读性和便利性。理解其工作原理和使用注意事项,可以帮助我们编写出更高效、更易于维护的代码。
Java数组传递及可变参数操作实例详解 Java 数组传递是指在方法之间传递数组对象的引用,而不是传递数组对象本身。这意味着,方法中对数组的修改将会影响原数组。在 Java 中,所有对象都是通过引用进行操作的,而...
Java String类为什么是不可变的_动力节点Java学院整理,动力节点口口相传的Java黄埔军校
在这个"Java可变参数demo"中,开发者可能创建了一个名为`MultiParam.java`的文件,这个文件包含了一个使用可变参数的示例,用于展示如何定义、调用和操作这些参数。通过这个小demo,开发者可以加深对Java可变参数的...
不可变类对于构建可靠、高效和安全的Java应用程序至关重要,它们是很多核心API的基础,也是并发编程和数据结构的最佳实践之一。理解并熟练运用不可变类机制,能够提高代码质量,减少潜在的bug,并优化多线程环境下的...
本文将详细介绍如何在Java中创建不可变对象,以及不可变对象的应用场景和最佳实践。 通过上述步骤和最佳实践,可以在Java中有效地创建不可变对象。不可变对象不仅提供了线程安全保证,还有助于提高程序的安全性、...
Java 类和对象是编程语言的基础,而可变参数(Variable Argument)是 Java 为了解决方法接收不定数量参数的问题引入的一个特性。这个特性允许我们创建一个方法,它能接受一个可变数量的参数,而不是固定数量。这在...
在Java编程语言中,"可变(协变)返回类型"是一个重要的概念,它涉及到泛型和类型安全。本文将深入探讨这个主题,并结合提供的`Test.java`文件,来理解如何在实际编程中应用协变返回类型。 首先,我们要明白什么是...
在 Java 中实现不可变类是提高程序安全性和可维护性的重要手段,尤其是在函数式编程中。不可变类的核心特性是其对象一旦创建,其状态就不能再发生改变。这是因为不可变对象具有以下优点: 1. **线程安全**:由于...
Java编程学习之java的不可变数据结构 在Java编程中,数据结构的不可变性是一个非常重要的概念。许多开发人员认为,只要使用final关键字或val关键字就可以使对象不可变,但是这是一种误解。不可变数据结构具有许多...
Java 语言中,String 类型是不可变的,这一点毫无疑问。那么,为什么 Java 语言的设计者要把 String 类型设计成不可变对象呢?下面,我们将深入探讨字符串不可变性的原因和优点。 不可变对象的定义 不可变对象指的...
Java并发编程规则:不可变对象永远是线程安全的 在Java并发编程中,了解不可变对象的概念对于编写线程安全的代码至关重要。不可变对象是指创建后状态不能被修改的对象,这类对象天生就是线程安全的。它们的常量...
例如,Java中的Integer、Long和String类都是不可变的。与之相反,可变类的实例在其生命周期内可以改变其成员变量的值,这是大多数自定义类的默认行为。 二、不可变类的优点 1. **线程安全**:不可变对象天生线程...
Java中的可变参数(Variable Arguments)是编程...总之,Java 中的可变参数提供了一种优雅的方式来处理不确定数量的输入,使得代码更加简洁和可读。在编写方法时,正确地利用这一特性可以提高代码的可维护性和实用性。
- `Immutable Collections`:不可变集合,保证线程安全。 - `Optional`:用于表示可能为空的值,避免空指针异常。 - `Preconditions`:用于检查方法参数的有效性,抛出异常。 - `Multimap`:多值映射,一个键...
Java 集合框架的设计者 Bloch Joshua 在他著名的 《Java 高效编程》一书中对 Java 线程安全的等级做出了相对精确的定义:非可变、线程安全、条件线程安全、线程兼容和线程不友好。 本文将结合上述 Bloch 关于线程...
### 不可变集合的重要性及其应用 #### 一、引言 在Java开发中,使用不可变集合已经成为一种广泛...通过Guava提供的不可变集合工具类,开发者可以轻松地创建和管理不可变集合,从而构建出更加健壮和高效的软件系统。
在Java编程语言中,String对象被认为是不可变的。这个特性是Java设计者为了优化性能、安全性和线程安全性而有意设定的。理解String对象的不可变性对于Java开发者来说至关重要,因为它影响着代码的编写、内存管理和多...
class:java中class确切的表示为一个类 object:java中object确切的表示为一个对象,也称为类的实例 其实,如果一个类被设计...包装类(e.g.Integer或Float)和String类是不可变类的代表。 访问器方法(accesso
- **String** 类在Java中是不可变的,这意味着一旦创建了String对象,就不能改变它的值。常用的方法包括 `concat()`、`substring()`、`indexOf()`、`replace()` 等。 - **StringBuffer/StringBuilder** 是可变的...