JAVA里Double包装类不是不可变类吗?比如Double d=3.2后面我再写d=2.3也能改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA里Double包装类不是不可变类吗?比如Double d=3.2后面我再写d=2.3也能改相关的知识,希望对你有一定的参考价值。

你这是进行了重新赋值了,重新赋值,但是没有修改原来d指向的内存空间的值
public static void main(String[] args)
Double d = 3.2;
Double old = d;
d = 2.3;
System.out.println(old == d); // 这是不相等的
参考技术A 变量都是可以改变的,,,,,常量不可以

~
参考技术B Double d = 3.2; 内存地址 d1

Double old = d; 内存地址 d1,

d = 2.3; 内存地址 d2

最终得到的结果 old 和 d 是两个地址

Java中的包装类

包装类

一、什么是包装类

在JAVA中,八大基础数据类型(int,float,double...)是不具备对象的特征的,比如基本数据类型就不能调用方法,功能简单,为了让基本数据类型也具备对象的特征,就有了JAVA包装类,包装类就是:将基本数据类型包装成对象,使其具有了对象的属性方法。 这样就可以使用方法和属性了

二、包装类的主要作用

  • 将本类型与其他类型进行转换
  • 将字符串与本类型及包装类型相互转换

三、如何使用包装类

基本类型对应的包装类对应的转换函数
byteBytebyteValue
shortShortshortValue
intIntegerintValue
longLonglongValue
floatFloatfloatValue
doubleDoubledoubleValue
charCharactercharValue
booleanBooleanbooleanValue
  • 装箱和拆箱
//装箱:将基本类型转换为包装类,分为手动装箱和自动装箱
int i=10;
Integer x=new Integer(i);	//手动装箱
Integer x=i;	//自动装箱

//拆箱:将包装类转换为基本类型,分为手动拆箱和自动拆箱
Integer i=new Integer(8);
int x=i.intValue();		//手动拆卸
int x=i;	//自动拆箱

四、包装类与字符串之间的转换

  • 将包装类转换为字符串
//使用包装类的toString()方法
//使用String类的valueOf()方法
//使用一个空字符串加上基本类型

int c=10;
String str1=Integer.toString(c);	//方法1
String str2=String.valueOf(c);		//方法2
String str3=c + "";				   //方法3
  • 将字符串转换为基本类型
//调用包装类的parseXXX()方法
//调用包装类的valueOf()方法转换为基本数据类型的包装类

String str="24";
int d=Integer.parseInt(str);	//方法1
int e=Integer.valueOf(str);		//方法2

以上是关于JAVA里Double包装类不是不可变类吗?比如Double d=3.2后面我再写d=2.3也能改的主要内容,如果未能解决你的问题,请参考以下文章

java中怎样把double基本数据类型包装在Double类

Java入门系列之包装类

在java中,怎样判断一个变量是啥类型的?

java里double类和double的区分 是否在于一个是大写一个是小写?

java switch(true)的括号里可以是boolean类吗?

Java基础——常用类(DateFile)以及包装类