Products
GG网络技术分享 2025-11-22 13:51 0
哎呀,细小盆友们,今天咱们来聊一聊Java里的一个超级关键的东西——引用数组嗯。这可是个高大巨大上的手艺,学优良了你的Java编程技Neng就会巨大巨大提升哦!
哎呀,这玩意儿问题轻巧松!引用数组啊,就像是你的玩具箱,你Neng把hen许多hen许多的细小玩具dou放进去。个个玩具dou有自己的名字和形状,而引用数组就是用来给这些个玩具编个号,方便我们找的。

在Java里引用数组是一种引用类型,跟基本的变量类型不一样。基本类型就是像int、 float、char这样的细小家伙,而引用类型呢,就像String、Array这些个巨大侠,它们在电脑里dou有属于自己的地方。
哎呀,用起来可轻巧松了!先来kan个例子吧:
java
String cars = new String; // 虚假设我们要放3个汽车玩具
cars = "BMW"; // 放进去一个宝马
cars = "Audi"; // 再放进去一个奥迪
cars = "Benz"; // 再说说放进去一个奔驰
kan明白了吗?我们创建了一个String类型的引用数组`cars`,它Neng够装3个字符串。然后我们就像放玩具一样,把三个汽车名字放进去。
哎呀,这玩意儿问题问得优良!基本类型数组就像是一盒细小木块,个个细小木块dou是一个真实正的数字,比如1、2、3。而引用数组呢,就像是一盒卡片,卡片上写的是细小木块的名字。
Ru果你改变了一个引用数组里卡片上的名字,那么在基本类型数组里的细小木块也跟着变了。但是Ru果你改变了一个基本类型数组里的细小木块,那引用数组里的卡片名字是不会变的。
哎呀,注意事项可许多了去了!比如不要把错误的玩具放进正确的玩具箱哦,这就是所谓的数组越界。还有,Ru果玩具箱里的玩具被记不得了不要忘了用垃圾回收器来清理哦,这样才Neng让电脑geng清洁、geng迅速!
优良啦,今天我们就聊到这里吧!学Java引用数组,就像学会了一个新鲜技Neng,Neng让你的编程变得geng加轻巧松。记住许多练习,许多思考,你一定Neng成为编程细小高大手哦!
哎呀,细小盆友们,迅速来和我一起学Java吧,让我们一起成为编程的细小达人吧!
哦,对了你晓得吗?就算没有电视机,遥控板也Neng独立存在哦!也就是说只是基本上原因是有一个句柄,并不表示非...不可有一个对象同它连接哦。
在Java中的引用类型, 是指除了基本的变量类型之外的全部类型,全部的类型在内存中dou会分配一定的存储地方。基本的变量类型只有一块存储地方,而引用类型有两块存储地方。方法形参的值传递是指形参和传进来的参数指向同一个值的内存中;说白了就是内存地址。
关于Java中的引用,我觉得在《Think in Java》这本书里面讲得hen优良。在那本书里他们把引用叫Zuo“句柄”。先说说你要明白啥是变量。变量的实质是一细小块内存单元。这一细小块内存里存储着变量的值。
比如int a = ; a就是变量的名名,1就是变量的值。而当变量指向一个对象时这玩意儿变量就被称为引用变量。比如A a =new A; a就是引用变量,它指向了一个A对象,也Neng说它引用了一个A对象。我们通过操纵这玩意儿a来操作A对象。此时变量a的值为它所引用对象的地址。
String s = new String; s就是引用, 说它是引用就是它的行为而言的,s引用着一个对象,换句话说就是s指向了一个对象;不是Java中没有指针,其实Java到处dou是指针,在我们编码这玩意儿角度来kan,s就是引用,言外之意就是你无法直接操作一个对象,你要想操作一个对象你非...不可通过该对象的引用!这也是为啥叫引用。在我们kan来Java确是屏蔽了指针的麻烦操作, 这只是为我们编程带来方便,但是真实正在运行时在Java程序跑起来之后会将引用转换成一个指针,s这玩意儿引用被转换为一个指针,真实真实正正的指向了内存中存储体的某个存储单元的有些位有些01。
对象是对象!引用时引用!这是两个不同的概念,上面怎么Neng说对象就是引用呢?只不过我们是通过引用操作对象,引用是一块内存,对象是另一块内存!java中就是用“句柄”来操纵对象的。
java中有两种数据类型:基本类型和引用类型。基本类型有8个:整数类型 byte、 short、int、long;浮点数类型 float、double;字符型 char;布尔类型 boolean。引用类型包括三种:类 Class;接口 Interface;数组 Array。
基本类型是通过诸如 int a = ; long b = 6L;的形式来定义的, 称为自动变量,自动变量存放的是字面值,不是类的实例,它存放在内存的堆栈中,数据巨大细小和生存期非...不可是确定的,存取速度比比kan迅速,在堆栈中的字面值Neng共享,也就是说我们定义一个int a = ;然后又定义了一个int b = ;这时a与b在内存中指向的是同一个字面常量。
引用类型一般是通过new关键字来创建, 比如Integer num = new Integer;它存放在内存的堆中,Neng在运行时动态的分配内存巨大细小,生存期也不必事先告诉编译器,当引用类型变量不被用时Java内部的垃圾回收器GC会自动回收走。引用变量中存放的不是变量的内容,而是存放变量内容的地址。
在参数传递时 基本类型dou是传值,也就是传递的dou是原变量的值得拷贝,改变这玩意儿值不会改变原变量,而引用类型传递的是地址,也就是参数与原变量指向的是同一个地址,所以Ru果改变参数的值,原变量的值也会改变。这点要注意。
在java中, 8种基本类型在java中dou有对应的封装类型,也就是引用类型:整数类型 Byte、Short、Integer、Long;浮点数类型 Float、Double;字符型 Character;布尔类型 Boolean。有时候我们会kan到这样的语句 Integer num = ;Boolean b = true;这样定义也Neng行得通, 其实这里面有一个自动装箱的问题,即java自动把3这玩意儿字面常量封装成了Integer对象,同理也有自动拆箱。
还有些需要注意的比比kan特殊的地方:1.Integer类型;2.String类型;3.其他的就不许多说了 打起来太磨蹭了Neng自己去kan一下java编程思想。
Java中有几种不同的引用方式, 它们分别是:有力引用、柔软引用、没劲引用和虚引用。下面我们先说说详细地了解下这几种引用方式的意义。
有力引用在此之前我们介绍的内容中所用的引用dou是有力引用,这是用Zui普遍的引用。Ru果一个对象具有有力引用,那就类似于必不可少许的生活用品,垃圾回收器绝不会回收它。当内存地方不够, Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有有力引用的对象来解决内存不够问题。
柔软引用SoftReference 类的一个典型用途就是用于内存敏感的高大速缓存。SoftReference 的原理是:在保持对对象的引用时保证在 JVM 报告内存不够情况之前将清除全部的柔软引用。关键之处在于,垃圾收集器在运行时兴许会释放柔软可及对象。对象是不是被释放取决于垃圾收集器的算法以及垃圾收集器运行时可用的内存数量。
没劲引用WeakReference 类的一个典型用途就是规范化映射。再说一个,对于那些个生存期相对较长远而且沉新鲜创建的开销也不高大的对象没劲引用也比比kan有用。关键之处在于,垃圾收集器运行时Ru果碰到了没劲可及对象,将释放 WeakReference 引用的对象。只是请注意,垃圾收集器兴许要运行许多次才Neng找到并释放没劲可及对象。
虚引用PhantomReference 类只Neng用于跟踪对被引用对象即将进行的收集。同样,它还Neng用于施行 pre-mortem 清除操作。PhantomReference 非...不可与 ReferenceQueue 类一起用。需要 ReferenceQueue 是基本上原因是它Neng够充当通知机制。当垃圾收集器确定了某个对象是虚可及对象时PhantomReference 对象就被放在它的 ReferenceQueue 上。
将 PhantomReference 对象放在 ReferenceQueue 上也就是一个通知, 说明 PhantomReference 对象引用的对象Yi经收尾,可供收集了。这使您Neng够刚优良在对象占用的内存被回收之前采取行动。
Reference与ReferenceQueue的配合用。GC、 Reference与ReferenceQueue的交互A、 GC无法删除存在有力引用的对象的内存。B、 GC找到一个只有柔软引用的对象内存,那么:① SoftReference对象的referent 域被设置为null,从而使该对象不再引用heap对象。
② PhantomReference在堆对象被释放之前就被添加到它的ReferenceQueue。
② WeakReference引用过的heap对象被声明为finalizable。③ 当heap对象的finalize方法被运行而且该对象占用的内存被释放时WeakReference对象就被添加到它的ReferenceQueue。D、 GC找到一个只有虚引用的对象内存,那么:① PhantomReference引用过的heap对象被声明为finalizable。
② SoftReference引用过的heap对象被声明为finalizable。③ 当heap 对象的 finalize 方法被运行而且该对象占用的内存被释放,SoftReference 对象就被添加到它的 ReferenceQueue。C、 GC找到一个只有没劲引用的对象内存,那么:① WeakReference对象的referent域被设置为null,从而使该对象不再引用heap对象。
值得注意的地方有以下几点:、 GC在一般情况下不会找到柔软引用的内存对象,只有在内存明显不够的时候才会找到并释放柔软引用对象的内存。、GC对没劲引用的找到和释放也不是马上的,有时需要再来一次几次GC,才会找到并释放没劲引用的内存对象。、 柔软引用和没劲引用在添加到ReferenceQueue的时候,其指向真实实内存的引用Yi经被置为空了相关的内存也Yi经被释放掉了。而虚引用在添加到ReferenceQueue的时候,内存还没有释放,仍然Neng对其进行访问。
在java中随便哪个东西douNengkan作是对象, 所以呢,我们可采用一种统一的语法,随便哪个地方均可照搬不误。但要注意,尽管将一切dou“kan作”对象,但操纵的标识符实际是指向一个对象的“句柄”。在其他Java参考书里还可kan到有的人将其称作一个“引用”,甚至一个“指针”。可将这一情形想象成用遥控板操纵电视机。只要握住这玩意儿遥控板,就相当于掌握了与电视机连接的通道。但一旦需要“换频道”或者“关细小声音”,我们实际操纵的是遥控板,再由遥控板自己操纵电视机。Ru果要在房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电视机。
Demand feedback