原始类型变量赋值是复制值本身,每个变量在栈中拥有独立存储空间,修改互不影响;七种原始类型(number、string、boolean、null、undefined、symbol、bigint)值直接存栈,赋值即生成新副本,不可变且无需深拷贝。
原始类型的变量赋值,本质是“复制值本身”。每个变量在栈内存中拥有独立的存储空间,赋值操作把源变量的值完整拷贝一份给目标变量,二者完全隔离,互不干扰。
值直接存栈,拷贝即独立
number、string、boolean、null、undefined、symbol、bigint 这七种原始类型,值直接存储在调用栈(stack)中。当执行 let b = a 时,引擎读取 a 当前的值(比如 42 或 "hello"),再把这个值原样写入 b 的栈位置——不是共享,也不是链接,就是一份新副本。
- 修改
b不会影响a,因为它们指向栈中两个不同的内存单元 - 即使
a和b值相同(如都为0),它们的内存地址也不同 - 原始值不可变:字符串拼接、数字运算等操作都会生成新值,旧值若无引用,可能被垃圾回收
赋值行为可预测,无需额外处理
你不需要深拷贝、也不用担心意外联动。只要变量是原始类型,赋值后就可放心修改任一变量:
-
let count = 100; let backup = count;→ 改backup = 999,count仍是100 -
let name = "Alice"; let alias = name;→alias += " Smith",name仍为"Alice" - 函数参数传原始类型,形参改值不影响实参,因为传进来的就是值的副本
和引用类型的关键分界点
判断是否属于原始类型赋值,只看被赋值的内容是不是这七种之一。一旦涉及对象、数组、函数等,机制立刻切换为“复制地址”,行为完全不同。所以写代码时,先确认类型:是字面量或 typeof 返回 "string"/"number" 等,那就是原始类型,赋值稳如磐石。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











