java中新建对象设为null 和new 一个对象的区别

在创建for循环创建对象的过程中,不想吧new的对象放在for循环当中,那样在占用内存比较大,所以就把它放在外面

刚开始时这样写的

直接在外层让pics为null ,里面的值直接引用,但是在程序的过程中,set值得时候始终未成功,后来在网上查了下null值和new对象的区别,null值是一个空指向,不会占用内存。new是一个实体,会占用内存。但是我又不行在循环中创建对象

所以采取了下面这个方法创建对象

这样创建对象只会在内存中保存一份该对象的引用,称之为软引用

因为当创建对象完成阶段就会进入该对象的应用阶段,而引用除了强引用外,虚引用,还分为软引用和弱引用

我们在程序很少使用弱引用和虚引用,使用软引用比较多,这是因为软引用可以加速jvm对垃圾内存的回收速度,维护系统安全,防止内存溢出等问题的产生

原文:https://blog.csdn.net/qq_43049310/article/details/90377067

原文地址:https://www.cnblogs.com/qbdj/p/10919377.html

时间: 2024-10-08 20:01:39

java中新建对象设为null 和new 一个对象的区别的相关文章

java中String a ; String a = null 和String a = ""的区别

String a; 申明一个string类型的 a,即没有在申请内存地址,更没有在内存任何指向引用地址; String a = null ; 申明一个string类型的 a,同时在内存里申请了一个地址,但是该地址不指向任何引用地址: String a = "" :申明一个string类型的 a,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址: 一般来说 字符串的使用 最好用String a = "" ;语句, 可以防止后面的程序因引用地址混乱而找不到的

Java中的对象序列化

好久没翻译simple java了,睡前来一发.译文链接:http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在Java中,对象序列化指的是将对象用字节序列的形式表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,并且支持从数据库或文件中反序列化,从而在内存中重建对象: 为什么需要序列化 序列化经常被用于对象的网络传输或本地存储.网络基础设施和硬盘只能识别位和字节信息,而不能识别Jav

Java中字符串对象

Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池. 工作原理 当代码中出现字

java中String对象和String变量

java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看到关于String s = new String("XYZ") + new String("XYZ");到底创建几个对象的讨论,觉得比较有意思,在此总结一下. 在JAVA中除了8种基本类型之外,其他的都是类对象及其引用.所以 "XYZ"在JAVA中是一个String对象,对于String类对象来说它的对象值是不能修改的,也

java中把对象转成xml(用JDK实现)

java中把对象转化成xml文件有多种方式,借助dom4j可以转,序列化成xml也可以,借助simpleframework框架中一些工具类也可以简单的把对象序列成xml文件,感兴趣的程序猿们可以网上搜搜具体方法实现,下边我们看看用JDK(1.5)中的工具如何实现把一个对象转成xml形式. package javatoxml; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.

java中的对象数组

对象数组,很容易顾名思义理解为:数组中的元素都是一个个的对象.但这种理解是错误的,数组中存放的并不是对象本身,而是对象的引用,即指向对象的那个指针,而这个指针是存放在虚拟机内存的栈中. 对象数组的创建需要两个步骤:1)创建一个数组,存放对象的引用.2)具体指出每个引用指向哪个对象(用new实现).下面举例说明. 假设有一个类,类名为Test.1)Test[] array = new Test[2]; 创建一个数组取名为array,里面共有2个元素,每个元素的类型是Test对象的引用.此时arra

java中,return和return null有什么区别吗?

java中,return和return null有什么区别吗? 最大的区别:return;方法的返回值必须是void!return null;方法的返回值必须不是 原始数据类型(封装类除过)和void! return 就是跳出方法...return null也是跳出方法并返回null.. 也就是说return null必须用在返回值不是void的方法里面..return可以用在任何方法里面 不要认为null就是没有值..null就是值..真正的没有值是..比如你String s;这个时候s是没有

java中关于对象的复制

java中的对象复制有两种方法,可以简略的称为浅克隆和深克隆 浅克隆:调用object的clone接口实现克隆,之所以称为浅克隆,是因为在复制的过程中将对象的成员变量中的基本数据类型直接复制,但是对于引用数据类型只是将复制对象成员变量的引用传递过去,并没有对于新对象生成新的成员变量,需要注意的地方,object的clone()方法的访问修饰符是protect的,所以,需要在对象中重写clone方法,将其访问修饰符修改为public方法即可 深克隆:将当前对象以及对象的成员变量完整的复制,生成一个

浅谈Java中的对象和引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通