mutable Java_Mutable对象和不可变对象之间的区别[重复]

问题

这个问题在这里已有答案:

什么是不可变的? 18个答案

任何人请举例说明Mutable对象和Immutable对象之间的差异。

#1 热门回答(114 赞)

可变对象具有可以更改的字段,不可变对象没有可在创建对象后更改的字段。

一个非常简单的不可变对象是没有任何字段的对象。 (例如,简单的比较器实现)。

class Mutable{

private int value;

public Mutable(int value) {

this.value = value;

}

//getter and setter for value

}

class Immutable {

private final int value;

public Immutable(int value) {

this.value = value;

}

//only getter

}

#2 热门回答(61 赞)

可变对象可以在构造后更改其字段。不可变对象不能。

public class MutableClass {

private int value;

public MutableClass(int aValue) {

value = aValue;

}

public void setValue(int aValue) {

value = aValue;

}

public getValue() {

return value;

}

}

public class ImmutableClass {

private final int value;

// changed the constructor to say Immutable instead of mutable

public ImmutableClass (final int aValue) {

//The value is set. Now, and forever.

value = aValue;

}

public final getValue() {

return value;

}

}

#3 热门回答(30 赞)

不可变对象只是在构造之后状态(对象的数据)不能改变的对象。 JDK中的不可变对象的示例包括String和Integer。

例如:( Point是可变的,字符串是不可变的)

Point myPoint = new Point( 0, 0 );

System.out.println( myPoint );

myPoint.setLocation( 1.0, 0.0 );

System.out.println( myPoint );

String myString = new String( "old String" );

System.out.println( myString );

myString.replaceAll( "old", "new" );

System.out.println( myString );

输出是:

java.awt.Point[0.0, 0.0]

java.awt.Point[1.0, 0.0]

old String

old String

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值