Java Web开发–Java篇[1]–从内存讲起

首先从最宏观上讲,Java程序设计就像开公司,开公司是为了得到一个好盈利,Java程序设计是为了得到一个好结果。当然公司可以持续盈利,Java程序也可以持续响应用户输入,持续输出计算结果。

开公司有两件事最重要,一个是物质基础,包括金钱、人力、办公楼、仓库、各类设备等等;另一个是公司的办事方式,即运行制度、公司文化、公司管理方式、公司办事制度决定的公司在处理事的时候采取的具体方式。对应到Java语言中,物质基础即Java程序中设定的常量、变量、字段、成员变量等这些概念;办事方式即Java中的方法、函数这些概念。今日暂且不表办事方式,咱先把物质基础说清楚。(题外话,面向过程和面向对象的区别就是公司运作方式的区别,面向过程所有的事情依赖于老板,老板让谁带上哪些资源以哪种方式办事,老板势必亲为,如果老板牛X,公司灰常高效,C语言就是这般。而面向对象把公司划分很多部门,每个部门有自己的办公室和设备资金等,有自己的办事方式,老板大体给个方向,调动多个部门配合完成一件事,所以面向对象老板也得强,还得有面向对象的思想,如果老板事必躬亲,那设这么多个部门简直就是浪费了;猫哥看到很多童鞋用Java写极其面向过程的语句,感觉挺累,当老板不就得让别人办事么。题外话比正题都多,也是够了…)

刚刚都是些逻辑的概念,现在回归Java语言的物质基础——内存。Java基本上就是使用RAM随机存储器的,RAM有一块叫堆、还有一块叫堆栈。堆非常好理解,就是一大片内存,谁想要用,就申请一堆,那这一堆地方就属于这个人了。至于堆栈呢,稍微复杂点,管理的更细点,分先来后到,按顺序分配,所以使用效率高点,反映到程序中就是存取速度稍微快点。OK,那Java语言的设计者就动了个小心思,他把Java中的常量、变量、字段、对象等需要存储的东西分为了两种,一种是基本类型、另一种是非基本类型。所谓基本类型就是像整数(Java中为int)、小数(Java中为double)等最常用的,设置为基本类型,因为常用所以放在了堆栈区。另一种非基本类型呢,就是字符串(String)还有各种各样的自定义的类(Class),这一部分放在了堆里面。

讲来讲去,好像我们作为程序员没必要知道这些,我们会用就行。这里关键是有一个灰常重要的区别,就是基本类型的量直接存储变量的值,而非基本类型的量存储变量的引用

好了,具体讲一下。
int i=0;int 表示基本类型整数类型,i是一个整数类型的变量,它存储的值就是0。这个太好理解了,这个值0存储在堆栈上,完事。
string i=“哈哈,我很好”;string 表示非基本类型字符串类型,i是一个字符串类型的变量,它存储的值是"哈哈,我很好"吗?非也非也,问题就在这,此处i存储的是一个引用,你可以认为是一个地址比如"中国北京001街区001号"(内存那么大的空间,总得分下地址,谁是几号楼那个屋子),这个地址是堆那块区域的地址,这个地址里保存的内容才是"哈哈,我很好"。那i的值其实是"中国北京001街区001号"。

如果上面讲的不清楚,那也没关系,等讲到函数传值还是传引用的时候,咱再结合实例讲讲。如果还不明白,那也没事,会用才是王道。


如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页