java学习之路的自我回顾1

  前段时间一直在做一些android的项目开发,但是慢慢的觉得自身现在的知识储备已经完全不够用了,又因为之前学习java的经历太水,基本没学到什么东西,基本思路还停留在C/C++学习时期,因此打算重新把java在学习一遍,也算是一种对于自身的激励吧,将自身所学到的感觉重要的东西发上来。


java中的数组

1.java中的数组可以说和C++中有挺大的不同,首先说说java中数组的定义方式吧

1.[type] [] str;

2.[type] str[];

虽然2中方式都可以,而且我在以前的C++学习中也习惯于使用第二种方式,但是不得不说,还是第一种方式更加通俗易懂,首先,可以将[type] [] 看成是一种类型,变量名为str,这样看的话就很容易理解了。根据一些书籍中提到的信息,现在的大趋势是使用第一种格式,第二种格式已经被很多语言所抛弃,例如C#,所以,还是习惯于第一种方式比较好

  有一点比较重要的事现在的str还不可以使用,现在只是创建了这个变量(实际是引用变量),但还未给其分配内存空间,即str的作用是用来指向一个内存空间,有点像指针了


2.数组的初始化(为其分配内存空间)

分为动态和静态初始化,静态为程序员给予每个元素初始值,动态为程序员只给予长度,由程序自行给予初始值

静态初始化 str=new [type] []{1,2,3,4,5};     简略写法str={1,2,3,4,5};

动态初始化 str=new [type] [length];


至于一些使用数组的方式方法,就不放上来了,下面的会比较深入

内存中的数组

以前写java程序的时候真的没怎么注意过数组在内存中的存在方式呢,关于C++中大致是以数组的头地址开始,地址一个接一个的往下排列来存储数据的,然后数组通过连接到首地址来访问这些数据,当时只是了解到这一步,现在发现,这里面还真有玄机呢


java中,要想访问一个数组的元素,不能够直接访问,而是只能够通过一个引用变量来访问,感觉有点像类呢,

实际上,我们所使用的引用变量是保存在栈(stack)内存中的,实际的数组元素则保存在堆(head)内存中,引用变量是通过调用堆内存来实现访问数组元素的,这里又牵扯出一个很有意思的东西,就是变量的生命周期(我自己认为的)

就是当一个方法执行的时候,每个方法都会建立自己的内存栈,这个方法内的变量将会一次被放入这个栈中,当方法结束时,这个内存栈也随即销毁,变量也被销毁;但当我们创建一个对象时,这个对象将会被保存到运行时数据区去,以便反复利用(因为对象的创建通常成本更大),这个运行数据区就是对内存,堆内存中的数据不会因为方法的结束而结束,比如方法中的形参,返回值等。只有当没有任何一个引用变量指向他时,系统才会在合适的时间将其销毁。

这个原理还是比较有趣的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值