关于基本数据类型和基本数据类型的原理和区别

一:基本数据类型:

一般由单一数据组成,不会太复杂,传递的是值value,完全在栈里面进行的操作,不涉及到堆,只有赋值

代码实例如下:

var i = 10;var m = i;var m = 16;console.log(i);

此时打印的i是10,在这里只是把i的值(10)赋给了m,但是在代码第三行的时候又进行了对m的赋值运算,但是此时并不影响i,两个是独立存在的,所以结果是10;

二:引用数据类型:多为数组和对象等复杂的数据类型,传递的是地址,多个地址指向堆里的同一组数据,一个地址进行赋值改变,也会影响另一个地址数据的改变

代码示例如下:
var arr = [1,2,3,4,5];var arr1 = arr;arr1[0] = 10;console.log(arr[0]);

此时打印出来的结果是10,arr和arr1存放在了栈里面,但是它们都指向了堆里面的同一组数据,即[1,2,3,4,5],当arr1[0]赋值为10的时候,堆里面的数据就变为了[10,2,3,4,5],由于两个地址用的一组数据,故arr的数据也跟着发生了变化

原理如下图所示:


 
时间: 2024-10-06 22:50:26

关于基本数据类型和基本数据类型的原理和区别的相关文章

数据类型核心操作步骤和原理

数据类型核心操作步骤和原理 JS中的数据类型 基本数据类型(值类型) number string boolean null undefined 引用数据类型 对象 {}普通对象 []数组 /^$/正则 Math 对象数据类型的 ... 函数 function 普通函数 类 ... JS代码运行在浏览器中,是因为浏览器给我们提供了一个供js代码执行的环境 -> 全局作用域(window/global) var a=12; var b=a; b=13; console.log(a); var o={

JAVA中分为基本数据类型及引用数据类型

一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数

JAVA中分为基本数据类型及引用数据类型(问题:堆和栈的区别,系统根据什么区分堆栈内存)

一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数

从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

最近在ASP.NET MVC中遇到一个问题,如题,在使用EF数据模型的时候,要去添加一条新的数据到Sqlserver数据库,在之前项目中并没有出现该异常,所以去扒了扒demo,发现有几个字段(数据库类型为datetime)savechange的时候默认绑定了datetime.now.问题就在这里,我的新项目并没有给定这几个字段的数据.下面总结下: 触发该错误的条件如下: SQL Server数据库版本中的字段类型为datetime2 数据库中,某个要进行Add或者Edit的字段的数据类型为dat

数据类型之简单数据类型

ECMAScript中有五种简单数据类型(基本数据类型):Undefined,Null,Boolean,Number,String. Undefined 类型 Undefined类型只有一个值,即Undefined.使用 var 声明变量但没有对其初始化时,这个变量的值就是 undefined. 例如: var message ; alert(message == undefined); //true 上面的代码只是声明了 message,没有对其初始化,所以 message 的值就是 unde

数据类型和抽象数据类型

<(^-^)> 我们知道在各种编程语言中都会有数据类型. 一.数据类型 先看看为什么会有不同的数据类型呢?很简单,很多东西不能一概而论,而是需要更精确的划分.计算机计算1+1并不需要多么大的空间,但是计算10000000000+1000000000就得需要有个比较大的空间来放.还有有时候会计算小数,小数的位数不一样,需要的空间也就不一样.数字1和字母a也需要区分啊,于是开发者就想出了“数据类型”这一招,用来描述不同的数据的集合. 我记得最早接触的数据类型就是int了.当初一个int a;就把我

JAVA的基本数据类型和引用数据类型的区别

引用数据类型: 类.接口类型.数组类型.枚举类型.注解类型: 基本数据类型和引用数据类型的区别: 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上: 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址. 例如,有一个类Person,有属性name,age,带有参的构造方法, Person p = new Person("Tom",20); 在内存中的具体创建过程是: 1.首先在栈内

java学习手札(3) java基本数据类型和引用数据类型

java的基本数据类型有八种,每一种都对应一种引用数据类型. java基本数据类型:1)数值型  byte 1个字节 范围-128--127(计算方法  -2^(字节数*8-1)--2^(字节数*8-1)-1) short 2个字节  范围 -2^15--2^15 - 1 int 4个字节      范围  -2^31--2^31-1 long 8个字节  范围  -2^63--2^63-1 定义时通常加一个f 2)布尔类型  boolean 1个字节   true 或 false通常用于判断

Java数据类型(基本数据类型和引用数据类型)

Java数据分为基本数据类型和引用数据类型.其中基本数据类型有4类8种. 基本数据类型:类似于普通的值 引用数据类型:传递的是内存的地址 对于引用类型来说,声明只会分配一个引用,指向null, 当你想使用的时候不能直接引用,必须实例化之后才能使用.否则,会引起空指针exception. 基本数据类型: Java数据类型(基本数据类型和引用数据类型),布布扣,bubuko.com

int与integer的区别(基本数据类型与引用数据类型)

一.先说说int与integer的区别 int 是基本数据类型,默认值为0,不需要进行实例化 integer 是引用数据类型,是int的封装类型,默认值为null,创建该类型需要进行实例化. 基本数据类型是可以用“==”进行比较,而引用数据类型则不可以,一般是通过equals方法来实现比较. 二 .再说说基本数据类型与引用数据类型的区别? 特点: 1.从概念方面来说 基本数据类型:变量名指向具体的数值引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值 2.从内存构建方面来说 基