Java中的可变类型和不可变类型

Java中的可变类型和不可变类型

定义:

​ 可变数据类型:当该数据类型对应的变量的值发生改变时,它对应的内存地址不发生改变,对于这种数据类型就称为可变数据类型。

​ 不可变数据类型:当该数据类型对应的变量的值发生改变时,它对应的内存地址也发生改变,对于这种数据类型就称为可变数据类型。

可变数据类型样例:

public class Test {
  public int num;

  public static void main(String[] args) {
    Test t = new Test();
    t.num = 11;
    
    Test t1 = t;
    t1.num = 111;

    System.out.println(t.num);
  }
}
//这里输出的是t是111

不可变数据类型样例:

public class Test_1 {
  public static void main(String[] args) {
    int i = 0;

    int i1 = i;
    i1 = 10;

    System.out.println(i);
  }
}//这里输出的i是0

解释:

  • 对于可变数据类型的样例中

​ t是Test类型(对象),t和t1是同一个地址,可以将t和t1理解成指针(地址),实际上就是t1->t->obj,通过t1改变obj中num的值,也就 是改变了内存中对象的值,再通过t调用的时候,num就是改变之后的值。

  • 对于不可变数据类型样例中

​ 当i1=i时,情况与对象时是这样子的i->0(地址),i1->0(地址),当i1进行i1=10时指向改变为i1->10i不发生改变,所以调 用i时值不发生改变。

不可变数据类型:

  1. 所有基本数据类型(boolean、char、byte、short、int、long、float、double)

  2. 所有基本数据类型的封装类(Boolean、Char、Byte、Short、Integer、Long、Float、Double)

  3. String(字符串),Enum(枚举),LocalDate、LocalTime、LocalDateTime(时间)

  4. 其他:BigInteger、BigDecimal等

  5. 不可变对象类型再Java中被称为Immutable Objects

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值