1. 记忆是如何组织的
每台计算机都有内存。它是什么?它有什么特性?而且,最重要的是,它对我们有什么好处?
每个程序(包括用 Java 编写的程序)在执行之前都被加载到主内存中。主内存包含程序代码(由处理器执行)以及程序数据(即程序本身放入内存的数据)。
什么是记忆,它是什么样的?
一个 Exсel 电子表格由单元格组成。每个单元格都有自己的唯一标识符( A1
, A2
, ... B1
, B2
)。如果您知道单元格的标识符,那么您总是可以向其中写入一些值或获取存储在那里的任何值。计算机内存的组织方式非常相似。
程序和程序数据在程序运行时存储在内存中。所有计算机内存都由称为字节的小单元组成。每个单元格都有一个与之相关联的唯一标识符或编号:0
, 1
, 2
, 3
, ...; (编号从零开始)。如果我们知道一个单元格的编号,我们就可以在其中保存数据。或者从中获取数据。一些单元存储程序的代码,即处理器的一组命令。其他存储程序使用的数据。单元格的编号也称为单元格地址。
处理器知道如何执行已加载到内存中的命令。几乎所有的处理器命令都类似于从一些单元格中获取数据,对它们进行处理,然后将结果发送到其他单元格。
我们组合了数百个简单的命令来获得复杂而有用的命令。
在代码中声明变量时,会为其分配一块尚未使用的内存。这通常是几个字节。声明变量需要您指明程序将存储在其中的信息类型:数字、文本或其他数据。毕竟,如果您不知道要存储的信息类型,那么就不清楚需要为变量分配多大的内存块。
在计算机时代的初期,程序直接使用内存地址,但随后,为了程序员的方便,单元格开始被命名。唯一的变量名首先是为了方便程序员,因为程序可以很好地处理普通内存地址。
2.内存中的变量
Java 总共有 4 种用于存储整数的数据类型。这些是byte
、short
和int
。long
类型 | 字节大小 | 类型名称的来源 |
---|---|---|
byte |
1 |
byte是 bite 的故意反拼,以避免与 bit 混淆 |
short |
2 |
短整数的缩写 |
int |
4 |
整数的缩写 |
long |
8 |
长整数的缩写 |
此外,Java 有两种实数类型:float 和 double:
类型 | 字节大小 | 类型名称的来源 |
---|---|---|
float |
4 |
浮点数的缩写 |
double |
8 |
Double Float的缩写 |
每次程序执行到创建变量的命令时,都会为其分配一小块内存(大小取决于变量的类型)。
Java 程序不允许直接访问内存。所有与内存有关的工作都只能通过 Java 虚拟机进行。
3.String
内存中的类型
该String
类型可以存储大量数据,这意味着它不仅仅是一种数据类型,而是一个成熟的类。
对象String
被放置在分配的内存块中,该内存块存储存储文本的另一个内存块的地址。
变量int
a
占用4
字节并存储值1
。
变量int
b
占用4
字节并存储值10,555
。我们使用逗号作为千位分隔符。我们使用句点作为小数点分隔符。
变量double
d
占用8
字节并存储值13.001
。
该String
str
变量占用4
字节并存储值G13
,该值是包含文本的内存块的第一个单元格的地址。
的文本String
object
存储在单独的内存块中。它的第一个单元格的地址存储在str
变量中。
4.编程中为什么编号从零开始
人们常常想知道为什么程序员几乎总是从零开始计数。好吧,事实是有很多情况从零开始计数更方便(当然也有从 开始计数更方便的情况1
)。
最简单的例子是内存寻址。如果你的变量已经分配了4
内存字节并且你知道这X
是第一个字节的地址,那么每个字节的地址是什么?,,, . _ _ 就这么简单,我们有一组字节可以通过索引, , ,访问。X+0
X+1
X+2
X+3
0
1
2
3
当我们考虑数据块中的相对地址时,从零开始索引是有意义的。这是从零开始计数的主要原因。
GO TO FULL VERSION