堆栈数据段和代码段

finalize()   是Object中定义的。表示在垃圾回收器回收当前对象之前,自动调用的方法,如果重写了该方法,可以做一些清理工作。
将整型变量直接赋值给包装类变量时,如果数值范围在-128——127之间,是指向同一个对象。
String x = "abc";    //表示字符串常量对象
程序代码加载到内存中,在内存中分四种:
1、堆:存放new(对象)。
2、栈:存放局部变量。
3、数据段:存放类变量、常量。
4、代码段:存放方法的定义。
由于String类型自动重写equals,所以String类型中:
==  比较两边的地址是否相同。
.equals  比较两边内容是否相同。
String c = new String("abc");
c变量指向堆中的字符串对象,但在产生堆中的字符串对象之前,会先在常量区中,产生字符串常量对象。然后以常量对象为模板,拷入堆中的字符串对象。


正则表达式
[]: 表示[]中描述的任意字符
{3,20}:表示前一个规则最少出现3次,最多出现20次
{3,}:表示最少出现3次,没有上限限制
{3}:表示只能出现3次,不能多不能少。
|  :表示或者
*  :等价于{0,},可以出现,可以不出现,如果出现,没有上限限制
+  :等价于{1,},至少出现一次,没有上限限制
?  :等价于{0,1},可以出现,可以不出现,如果出现,最多一次。
.     : 表示任意字符
\d   :等价于[0-9],表示数字
\s   :表示空格或回车
\w  :等价于[a-zA-Z0-9_ ],表示合法标识符
匹配汉字\u4e00-\u9fa5


字符串具有长度不可变化的特性,当对字符串进行添加、替换、删除时、不会改变字符串的内容,而是产生一个新字符串。
StringBuffer是缓冲区的对象,当对StringBuffer做添加、替换、删除时,直接改变StringBuffer的内容,不会产生新对象。
如果需要对字符串做频繁操作时,一般先转换为StringBuffer。操作完成以后,再通过调用toString()转换为字符串。
### 代码段数据段堆栈BSS段的区别与作用 #### 代码段 (Code Segment) 代码段也被称为文本段,用于存储程序的机器指令。这部分内存通常是只读的,防止运行时修改代码造成意外错误。它包含了由编译器转换后的源代码指令集,这些指令被CPU执行来完成特定的任务[^2]。 ```c void function() { printf("This is a code segment example.\n"); } ``` #### 数据段 (Data Segment) 数据段负责保存已经初始化过的全局变量及其对应的初始值。此部分的内容会在加载程序到内存之前就已经存在于目标文件之中,并且随着进程启动而映射至相应的虚拟地址空间内。由于其中含有具体的数值信息,因此占用的实际字节数量取决于定义了多少这样的变量以及各自的类型大小[^1]。 ```c int global_initialized_variable = 42; // 存储于数据段中 char string_literal[] = "Hello, world!"; // 字符串常量也可能位于这里 ``` #### BSS段 (BSS Segment) BSS段专门用来容纳那些声明但尚未赋予具体初值的全局或静态局部变量。尽管在最终生成的二进制文件里看不到任何关于该部分内容的具体表示形式——因为它们默认全为0——但在程序真正被执行前仍需为其预留足够的连续地址范围以便后续操作使用。值得注意的是,虽然理论上讲BSS段紧挨着数据段之后排列,但这主要取决于不同平台下的实现细节[^4]。 ```c static int uninitialized_static_variable; // 置在BSS段 extern double another_uninitialized_global_var; ``` #### 堆栈段 (Heap and Stack Segments) - **堆**:动态分配给应用程序使用的额外工作空间,程序员可以通过显式的API调用请求获得更大规模的对象实例化所需的空间资源;其增长方向是从低地址向高地址扩展。 - **栈**:自动管理函数参数传递过程中的临时实体生命周期的地方,每当遇到子例程调用事件发生之时就会创建一个新的帧结构体以记录当前上下文环境状态变化情况;它的尺寸相对较小而且遵循后进先出原则运作模式,即每次返回上级调用者处都会释掉最顶层的那个活动记录所占据的那一片区域;栈的增长趋势正好相反,是由高地址往低地址推进。 ```c // 动态分配内存的例子(涉及堆) int *dynamic_array = malloc(sizeof(int) * 10); // 函数调用会涉及到栈的操作 void some_function(int param) { /* ... */ } some_function(5); // 这里的整数'5'会被压入栈作为实参传进去 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值