ZKX's LAB

java 引用类型复制

2020-07-17知识34

java里String类型可以直接赋值,保存的是值还是引用的地址? 先给你一个2113在博客园看到的说明问题1我声明了什么!5261String s=\"Hello world!许多人都做4102过这样的事情,但是,我们到底声明1653了什么?回答通常是:一个String,内容是“Hello world!这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向\"Hello world!这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:String string=s;我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。我的理解:字符串的底层真实实现,还是和C一样,用的数组来存储多个char类型的字符,所以可以理解成声明一个数组,因为数组是多个内存地址的集合,你想想,那么多地址,如果是直接赋值,该存哪个地址哇?暂时这么多,还要需要欢迎提问Java中的基本类型和引用类型变量的区别 基本类型:例如 int a=1;boolean bool=true;基本类型是具体的值。引用类型:例如 String str;boolean boo;引用类型指向内存空间的引用,是个对象。(个人理解)。java中值类型和引用类型的区别 1:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。2:使用场合,例如说往ArrayList里面add,必须add的是Object而int不是对象,就只能把Integer添加进去3:int是基本类型,Integer是int对应的封装类,声明int a;a自动赋值0;声明Integer a;a自动赋值为null4:int是基本的数据类型integer是类int的初始值为0,不能为null,如果需要为null的时候,需要用integerjava里String类型可以直接赋值,保存的是值还是引用的地址? 首先告诉你,java里的String类型保存的就是引用地址,就像你下面说的,如果用String a=\"你好\"这种方式赋值的话,a里会保存一个地址,双引号字符串是常量字符串,在java文件编译的时候就放在虚拟机的常量池中,“你好”的真正位置也是在常量池中,另外还有一种方式:String a=new String(\"你好\"),如果这样写就和第一种不一样了,这个对象是在程序运行时创建,不是创建在常量池而是和其他java对象一样在java堆上创建,因此它的地址和第一种的不用。第二个问题,String和int直接赋值的区别。首先,最大的区别,一个是对象,一个是数值,对象可以为null,数值却必须有值,哪怕你没赋值,系统也会自动赋值为0。int b=3是直接在内存空间分配了一块空间b内容是3,b的内容是可变的,可以变为5,6…而String对象是不可变的,“你好”实际是在堆中存在的,把引用给了a,如果String a=\"bbb\"则是把另一个新的对象\"bbb\"的地址引用给了a,之前的对象“你好”是没有改变的。第三个问题,为什么引用类型赋值不能像基本数据类型呢?因为引用类型远比基本数据类型复杂啊,基本数据类型只有数值、字符、布尔三种数据类型,可以很简单得表示出来,像2、'a'、true这样,赋值也自然容易,Java 中对引用类型的变量赋值是原子操作吗 是原子性的 但是long和double除外Java值类型和引用类型,以及复制的是什么东西 java 中的数据类型分为两大类:值类型(基本数据类型)和引用类型(复合数据类型)一,值类型分为 1,整数类型(byte,short,int,long)2,浮点类型(float,double)3,布尔类型(boolean)4,字符类型(char)二,引用值类型 除了值类型外就是引用值类型了,引用值类型有1,类类型(class)2,数组 3,接口类型(interface)关于复制的是什么?我还真不知道。java 在引用类型赋值的时候怎么能不给地址?直接赋值呢? Java中的引用类型类似于指针,基本类型可以直接赋值,而引用类型是将引用指向一块内存。比如:Person p=new Person();我们都知道在Java中new的东西会在内存中开辟一块内存,左边是指向这块内存的引用。我理解中你说的直接赋值应该是类似于:int i=1;double b=2;boolean a=false;这种是因为他们是基本类型,不算是一个对象。曾经在一本书上看到过,如果Java直接舍弃这些基本类型,可能会是一门更加纯粹的OOP语言。·java中 引用 和 赋值 有哪些区别? 引用是用一块内存指向另一块内存!一般引用中的内容是一个内存地址!而 赋值是把自己内存中的内容拷贝到指定的内存中!其中可以是内存地址也可以是数据(比如java中基本类型的值)java里String类型可以直接赋值,保存的是值还是引用的地址? 首先告诉你,java里的String类型保存的就是引用地址,就像你下面说的,如果用String a=\"你好\"这种方式赋值的话,a里会保存一个地址,双引号字符串是常量字符串,在java文件java基本类型和引用类型变量 是什么? 上两次课我们知道了,java语言中的两种数据类型。这节课呢,我们对上两次课做一个补充,也加深一下理论知识的学习。理论的东西是很有用的啊。这节课介绍基本类型变量和引用

#赋值#string#变量#赋值语句#引用类型

随机阅读

qrcode
访问手机版