java对象 声明 初始化 =null new() 总结
来源:互联网 发布:家庭相册制作软件 编辑:程序博客网 时间:2024/06/17 06:50
链接:https://www.zhihu.com/question/21468505/answer/18333632
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
首先要明白,java里对象传递的时候,传递的都是引用(也就是对象的地址),这比传递整个对象高效的多。而基础类型,int,double等传递的才是值。
比如,(new ArrayList<String>).add(new String("hello")),jvm只是把new String("hello")的地址存入到了列表list里面。String str = new String("Test"),是开辟内存放入了对象,并把它的引用赋给str。
同理,BookInfo bookinfo=null与BookInfo bookinfo=new BookInfo():前者,是声明了一个对象(的引用),jvm并没有开辟内存放入一个对象;而后者,在声明了一个对象的引用后,又把新开辟的没有存储任何有效值的对象的地址赋给了他。bookinfo=test.getinfo(),又把它指向了另一个地址 = = 也就是说原来开辟的内存并没有用,那就没有意义。但是java虚拟机自动垃圾回收机制会判断并回收内存的。。不用想太多。
你完全可以写成:
ArrayList<BookInfo> InfoList=new ArrayList<BookInfo>();
BookInfo bookinfo=infoList.getInfo()。
综上:如果你的类在创建后,要自己读写数据,那就必须初始化;如果像Bookinfo那样,完全是为了从其他地方接收引用,也完全可以省了new吧。
如果是在类的成员变量中,BookInfo bookinfo;和BookInfo bookinfo=null;是一样的效果;因为该类在初始化时成员变量也会做初始化,默认就是null;而方法内的变量则不会初始化;
而如果是在方法的成员变量,则必须初始化,也就是=null或者new,因为为了保证java的安全性;
- java对象 声明 初始化 =null new() 总结
- Java类对象数组声明和初始化
- java对象数组的声明和初始化
- String str = null、String str = ""、String str = new String()中所声明对象str之间的区别:
- java创建对象时,new 出一个对象 和 = null的区别?
- java 类的实例 new一个对象初始化顺序
- java 类的实例 new一个对象初始化顺序
- java数组声明,初始化
- java 数组声明初始化
- VTK初始化New返回Null问题
- java泛型对象初始化--java泛型对象能实例化吗T t=new T()
- Java 对象 == null
- new 出一个对象 和 = null的区别
- java--new的初始化
- java对象初始化面试问题总结
- 创建对象初始化 (new)
- C++-----直接声明对象PK new对象
- java中,只声明一个对象不赋值,与声明一个对象并赋为null,有啥区别?
- fastjson学习
- Git(二)
- \pset 、\x命令
- GIS 地图投影
- HDOJ 2734 Quicksum
- java对象 声明 初始化 =null new() 总结
- 【Unreal Engine 4】虚拟试衣镜
- 苹果明年推出跨平台应用,同时在 iPhone、Mac 上运行
- 使用AcDbEntity的Explode方法后分解对象的删除
- Postgresql临时表
- pat甲级1012-The Best Rank
- 剑指offer 编程题(28):最小的K个数
- PostgreSQL的约束
- <剑指offer 面试题2> 单例模式 (Java实现)