标签:组织 上下 random string 存储 活性 文档 换算 持久
这里要用例子去形象的去理解:比如你用一个page对象, 分页的时候会用到, 用page对象的引用,传到一个方法中, 方法中实现的功能是去数据库拿值, 拿到后在方法中进行改变。
这样做结果是否会改变?
这样的题目问的其实就是值传递和引用传递, 引用传递改变的其实是,地址,这样做会改变地址中存储的值的数据。而如果传递的是一个基本数据类型的引用, 那么传递的则是数值, 也就不会影响。
存储引用到哪里去呢
1.存到寄存器,寄存器,位于Cpu存储器的内 部,是速度最快的存储方式。另外C和C++允许你 向编译器建议存储在何处,而Java不行。
2.堆栈,位于RAM中,random accept memory,速度仅次于寄存器, 它有一个指针,向上移动则释放内存,向下移动则分配新的内存空间。创建程序时候,系统必须知道的确切的生命周期,为了上下移动,分配和释放资源,这样做做法灵活性,特别是对象的引用会放在堆栈当中
3.堆, 一种通用的内存池,编译器不需要知道存储的数据在堆中的生命周期,自动进行分配,但是这种灵活性是有代价的, 代价是付出性能的代价。
4.常量存储,常量值通常放在代码内部(也就是代码段中), 这样比较安全,对于这话的理解,我是觉得 final int a = 3; 里面的3是位于data段,里面的 a 也就是常量位于代码段中,所以书中作者翻译过来是放下代码内部。
程序在内存中的组织形式是段,有堆栈段、数据段和代码段。对于数据指针指向数据,函数指针则指向某个代码。
5.非RAM存储,意思是指存活在程序之外, 程序运行在内存cpu的寄存器, 活于程序之外就是指在内存之外, 也就是说在磁盘内。被人称做流对象,或者持久化对象, 就像Java中IO流的流一样, 数据就像流水一样。所以用流。
基本数据类型是比较特殊的类型,因为他们不需要new一个对象,因为他们是放在堆栈中的, 引用中是直接存放值,而不是存放地址的引用。所以不需要
6.基本数据类型的字节数,要在脑海中这个印象,不需要记成具体数字, 比如byte 1字节, short2字节, int 4个字节, long 8个字节, float 4个字节, double 8个字节。 浮点型要比整型精度来的低, 换算的规则是 1字节等于八位Bite, 也就是2的8次方。 Boolean类型占2字节, char类型得看编码, Unicode的中文char是占两个字节
还有一个存放更大的数据的类。叫做BigInteger, BigDecimal支持任意精度
关于数组:c++和c中是用于直接操作内存, 所以在初始化之前使用数组之前是很危险的事情。而在Java中创建数组其实就是创建一个数组的引用, 创建数组的引用的化,会自动初始化的时候为引用赋值, 初始化的规则:整型为0, 浮点型为0.0, char类型为/u000, Boolean型为false, String等引用类型为null.
标签:组织 上下 random string 存储 活性 文档 换算 持久
原文地址:http://www.cnblogs.com/jwlxtf/p/7895969.html