java对象指向问题
2020-06-07 16:03:29来源:博客园 阅读 ()
java对象指向问题
刷到一个题脑子一下子没有反应过来记录一下子学习 如下:
答案就是A 这是为什么呢 我乍一看nums1 new 了一个数组对象并把长度定为3,nums2声明了一个数组,并定义了12345的值,如果
把nums2赋值给nums1它不是会越界嘛长度不一样嘛,这是我乍一看的想法。
理解了好一会后发现这个题考查的是对象指向问题:
再深入理解一下的话就是对象的声明和new了 声明对象一般用于基本数据类型,基本数据类型不能用new来声明,但是可以使用它们对应的封装类来写
public static void main(String[] args){ /*int []array = new int [4]; array[0]=10; array[1]=20; System.out.print(array[0]+":"+array[1]);*/ int[] nums1 = new int[0]; int nums2[]= {1, 2, 3, 4, 5}; nums1 = nums2; for (int x : nums1){ System.out.print(x + ":"); } for (int i = 0; i < nums2.length; i++) { System.out.println(nums2[i]); } }
new一个对象时,会在堆中开辟出一个内存空间,同时在栈中生成你创建的变量这个变量指向对应的内存空间,这相当于key和value的关系当堆中的空间没有对象指向它时即为null时,它将会被系统回收。
而声明对象是直接在栈中声明。
所以题目的问题是指向,当nums2指向这个堆中的内存时,它的值就会变成nums2,因为nums1也指向这个堆内存,即nums1=nums2
个人学习,内容拙劣见谅QAQ
原文链接:https://www.cnblogs.com/2979100039-qq-con/p/13062833.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash