js数据类型

02-JavaScript-内部JS、外部JS、数据类型、关键词 内部JS示例");// 在页面加载完成后自动弹出提示框 阅读详情

1.变量可以存放两种类型的值: 原始值 和 引用值
2.
3.引用值指的是复合数据类型的值,包括 Object、Function、Array、Date、RegExp。

1.原始值

原始值代表原始数据类型的值,也叫基本数据类型。原始值类型分为五类:Stirng、Number、Boolean、Null、Underfined。

1.字符串类型/String

【创建方法】
var str=’abc’;

2.数字类型/Number

【创建方法】
var num=123;

3.布尔类型/Boolean

【创建方法】
var bool01=true;
var bool02=false;

4.Null

【创建方法】
var nu=null;

5.Undefined

【创建方法】
var un;

null == undefined这样的去判断返回的只是值的相等 (返回true)
null === undefined这样的判断就是判断对象的值和类型都要相等(返回false)

2.引用值

引用值是指一些复合类型数据的值,引用类型有object,Array等(对象,数组,函数)

1.对象类型/Object

【创建方法】
var obj01=new Object();
var obj02={};
function obj03(n){
var obj=new Object();
obj.name=n;
return obj;
}
var a=obj03(‘创建方法03’);
function Obj04(n){
this.name=n;
}
var b=new Obj04((‘创建方法04’);

2.数组类型/Array

【创建方法】
var arr01=[]; 创建数组的方法01
var arr02=news Array(); 创建数组的方法02

3.函数类型/Function

【创建方法】
//函数申明
function fun01(n){
return n;
}
//函数表达式
var fun02=function(n){
return n;
}

3.栈内存和堆内存

存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。根据数据类型的的不同,有的变量存储在栈中,有的存储在堆中

1.栈内存

存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则。

栈内存,在函数中定义的“一些基本类型的变量和对象的引用变量”都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

Java中的代码是在函数体中执行的,每个函数主体都会被放在栈内存中,比如main函数。假如main函数里调用了其他的函数,比如add(),那么在栈里面的的存储就是最底层是main,mian上面是add。栈的运行时后入先出的,所以会执行时会先销毁add,再销毁main。

栈内存的优势:栈内存与堆内存相比是非常小的,存取速度比堆要快,仅次于寄存器,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。

栈内存的缺点:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, boolean, char)和对象句柄。

2.堆内存

所有new出来的对象和数组。

注 意:堆内存和数据结构中的堆完全是两码事,分配方式类似于链表。

堆内存是区别于栈区、全局数据区和代码区的另一个内存区域。堆允许程序在运行时动态地申请某个大小的内存空间,堆内存实际上指的就是(满足堆内存性质的)优先队列的一种数据结构,第1个元素有最高的优先权。

在堆内存分配时首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。

另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。堆内存是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆内存的大小受限于计算机系统中有效的虚拟内存。由此可见,堆内存获得的空间比较灵活,也比较大。堆内存是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。

栈与堆都是Java用来在Ram中存放数据的地方。与C ++不同,Java自动管理栈和堆,程序员不能直接设置栈或堆 。

Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过新的,newarray,anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的。

堆内存的优势:可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的的垃圾收集器会自动收走这些不再使用的数据。
堆内存的缺点:由于要在运行时动态分配内存,存取速度较慢。

3.栈内存和堆内存之间的区别

1、应用程序所有的部分都使用堆内存,然后栈内存通过一个线程运行来使用。
2、不论对象什么时候创建,他都会存储在堆内存中,栈内存包含它的引用。栈内存只包含原始值变量好和堆中对象变量的引用。
3、存储在堆中的对象是全局可以被访问的,然而栈内存不能被其他线程所访问。
4、栈中的内存管理使用LIFO的方式完成,而堆内存的管理要更复杂了,因为它是全局被访问的。
5、栈内存生命周期很短,堆内存的生命周期从程序的运行开始到运行结束。
6、我们可以使用-Xms和-Xmx JVM选项定义开始的大小和堆内存的最大值,我们可以使用-Xss定义栈的大小。
7、当栈内存满的时候,Java抛出java.lang.StackOverFlowError异常;而堆内存满的时候抛出java.lang.OutOfMemoryError: Java Heap Space错误
8、和堆内存比,栈内存要小的多,因为明确使用了内存分配规则(LIFO),和堆内存相比栈内存非常快。
9.对于栈内存和栈内存之间的值是拷贝关系,当改变一个栈的内容,不会影响其它栈的内容,栈与栈是互相不影响的。

4.原始值和引用值的区别

1.原始值放在栈(stack)中,引用值放在堆(heap)中
2.原始值存储在栈中。意思就是说,当一个原始变量把值赋给另一个原始变量时,只是把栈中的内容复制给另一个原始变量,此时这两个变量互不影响,即当一个变量值改变时,另一个变量不会因此而发生任何变化。

var a = 10 ;
var b = a ;
a = 20;
console.log(b);     //输出10 b的值不会因a的值的改变而该改变

3.引用值与原始值不同,引用值把引用变量存储在栈中,而实际的对象存储在堆中。每一个引用变量都有一根指针指向其堆中的实际对象。

var a = [1,2,3] ;  
var b = a ; 
a.push(4) ;
console.log(b) ;     //输出1,2,3,4 
a = [12] ;
console.log(b) ;     //输出1,2,3,4 
console.log(a) ;     //输出12

引用值a赋值给b时,各自的变量名存储在栈中,而实际对象值都指向堆中的同一个地址,当变量a通过方法改变值时,实际上时改变堆中内容,因此,此时b的值也会相应的改变。当a通过非方法改变值时,系统会为该引用变量重新创建一个堆房间,此时,a的指针指向新的堆地址。

从大疆智图到Cesium:3D Tiles模型加载与Web三维场景构建实战 本文详细介绍了如何利用大疆智图生成3D Tiles数据,并通过Cesium在Web端实现高效加载与三维场景构建。从大疆智图参数设置到Cesium环境配置,再到3D Tiles性能调优与高级功能实现,提供了一套完整的实战指南,帮助开发者快速掌握3D Tiles模型加载与Web三维场景构建技术。 阅读详情

相关推荐

ADS使用Smith圆图进行阻抗匹配

在处理RF系统的实际应用问题时,总会遇到一些非常困难的工作,对各部分级联电路的不同阻抗进行匹配就是其中之一。一般情况下,需要进行匹配的电路包括天线与低噪声放大器(LNA)之间的匹配、功率放大器输出(RFOUT)与天线之间的匹配、LNA/VCO输出与混频器输入之间的匹配。匹配的目的是为了保证信号或能量有效地从“信号源”传送到“负载”。 阻抗匹配(impedance matching) 信号源内阻与所接传输线的特性阻抗大小相等且相位相同,或传输线的特性阻抗与所接负载阻抗的大小相等且相位相同,分别称为传输线的输

红茶绿茶和奶茶的博客 3万+

判断js数据类型

一、typeof操作符 typeof 返回一个表示数据类型的字符串,返回结果包括:undefined(未定义)、number(数值)、boolean(布尔值)、string(字符串)、object(对象或null)、function(函数)等6种数据类型。 1. undefined类型 声明变量但是还没有初始化定义的,都默认为undefined类型。 2.Null类型 null表示空对象指针 u...

SinceSpringOnU的博客 219

SAP FI实战入门:从借贷法则到F-02记账,新手必懂的会计凭证操作

本文详细介绍了SAP FI模块中借贷记账法的核心逻辑及F-02凭证录入的全流程操作。通过实例解析借贷方向规则、科目编码设置及金额镜像原则,帮助新手快速掌握会计凭证操作技巧。同时提供了FS10N余额查询和常见错误排查方法,助力用户高效完成SAP财务记账任务。

weixin_29306571的博客 263

substr和substring/splice/since

1.substr和substring区别–均从下标开始截取 let str = ‘2020-03-02’ 1.substr—第一个参数是下标-可以为负数,第二个参数是长度 let yy = str.substr(1,4) // 020- let yy = str.substr(0,4) // 2020 2.substring—第一个参数是下标(负数无效,直接替换为0),不能为负数,第二个参数是下标,截图的位置一般是end下标-1 let mm = str.substring(1,2) // 0 let m

qq_27808079的博客 249

Penpot自托管全攻略:5分钟搞定私有化部署(附Docker配置详解)

本文详细介绍了Penpot开源原型设计工具的私有化部署全流程,从Docker基础配置到企业级优化方案。通过分步指南和实战技巧,帮助设计团队快速搭建安全高效的自托管环境,实现数据自主可控。内容涵盖LDAP集成、性能监控、备份策略等关键企业需求,是Penpot私有化部署的完整参考手册。

sugar的博客 1133

树莓派4B安装 ubuntu20.04 & VNC远程桌面 & 安装ROS noetic

树莓派4B安装ubuntu20.04 & VNC远程桌面1、安装ubuntu方式1:下载Imager文件。方式2:下载镜像文件。2、查询树莓派 IP 地址3、使用ssh远程登录树莓派4、更新源地址5、更新6、安装桌面环境7、允许root登陆8、登陆远程桌面9、设置中文 1、安装ubuntu 方式1:下载Imager文件。...

weixin_44415639的博客 2万+

js数组常用方法总结

js数组常用方法

VIVI_优快云01的博客 166

【外挂编程】外挂编程技术揭秘(二)

引言: 经过上一篇文章大家可能对外挂有了一个初步的认识,之前的内容比较简单,应该大家很容易掌握。我写作过程中我发现三个篇幅可能写不完,后续还可能要多加几个篇幅,这篇我们就先以内存挂为主吧。话不多说了,让我们开始吧。 文章中代码github地址: https://github.com/Diamonds-ZhaoYu/hz_example 环境要求: 系统:Windows 语言...

c-rain 4033

JavaScript函数

JavaScript 函数 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>测试实例</title> <script> function myFunction() { ale...

SinceSora的博客 156

CANoe UDS $27服务DLL生成实战:从工程配置到算法修改全流程

本文详细介绍了在Vector CANoe中为UDS(统一诊断服务)的$27安全访问服务生成定制化DLL(动态链接库)的全流程。从定位官方参考工程、配置Visual Studio开发环境,到深入解析核心的GenerateKeyEx函数接口,并重点演示了如何修改和实现自定义的种子-密钥安全算法,最终完成DLL的编译、部署与CANoe集成测试,为汽车电子诊断开发提供实战指导。

star5的专栏 535

PreScan快速入门到精通第十一讲之PreScan道路标记,建筑物、抽象物体及交通标识

道路标记目的:路标是为了完善智能驾驶实验场景。用途:道路标记是附加在道路段上的。标记的大小{小、大}、颜色,以及相对于路段的位置和方向可以在属性编辑器中设置。也可以指定褪色和孔洞,类似于路段自动添加标记的配置。在GUI中的位置:作为一个预定义的库元素格式:NAMBOX: 汇编表中不知道。PreScan包含三个不同国家的标记:荷兰、日本和美国。可以通过在国家首选项中切换国家来隐藏或显示。附件道路标线附在路段上,并相对于路段原点定位。默认情况下,道路标记被固定在路段上,用小锚点表示。11.2 建筑物目...

小明师兄的博客 1804

java since注解_JAVA注解学习(一)

什么是JAVA注解注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。天哪,这真是一个糟糕的决定,反正我认为是,原因:用专业名词来介绍专业名词。Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码...

weixin_34135180的博客 373

100天精通Python(基础篇)——第2天:基础语法详解(标识符、保留字、注释与代码结构)

100天精通Python(基础篇)——第2天:基础语法详解(标识符、保留字、注释与代码结构)

努力让自己发光,对的人才能迎着光而来 34万+

【JavaScript】一篇文章,带你拿捏JS中的数据类型

JavaScript有8种数据类型:7种基本类型(String、Number、Boolean、null、undefined、Symbol、BigInt)和引用类型Object。基本类型存储在栈内存中,引用类型存储在堆内存中,栈中保存引用地址。字符串不可变,数组可变;数字采用IEEE754标准,存在精度问题;布尔值用于逻辑运算;null表示空值,undefined表示未赋值;Symbol创建唯一标识符;BigInt处理大整数。引用类型包括对象、数组、函数等。内存分为代码空间(存储代码)、栈空间(存储基本类型和

sunshine_dd的博客 1479

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JavaScript用法】JavaScript(JS)的基本语法(JS数据类型,JS变量,JS运算符,JS流程控制语句)

JavaScript(JS)的基本语法 目录 JavaScript(JS)的基本语法 一. 与html结合方式 二. 注释 三. 数据类型: 四. 变量 五. 运算符(和Java有点类似) 六. 流程控制语句(和JAVA类似): 七. JS特殊语法: 一. 与html结合方式 1. 内部JS:定义<script>,标签体内容就是js代码(...

No8g攻城狮的博客 5105

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【JavaScript】(二) JS数据类型

目录数据类型1、数据类型简介1.1 变量的数据类型1.2 数据类型的分类2、 简单数据类型2.1 基本数据类型2.2 数字型 Number2.2.1 数字型进制2.2.2 数字型范围2.2.3 数字型三个特殊值2.2.4 isNaN()2.3 字符串型 String2.3.1 字符串引号嵌套2.3.2 字符串转义符2.3.3 字符串长度2.3.4 字符串拼接2.3.5 字符串拼接加强2.4 布尔型 Boolean2.5 Undefined 和 Null3、 获取变量数据类型3.1 获取检测变量的数据.

weixin_48650082的博客 2079

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JS学习篇(二) JavaScript七种数据类型

要了解一门语言,首先要了解它的数据类型有哪些?他们之间有什么关系?能否互相转换等。 目前,JavaScript(下称JS)中有七大数据类型,它们分别是: 1. Boolean 布尔型 2. Null 空 3. Undefined 未定义 4. Number 数字型 5. String 字符串型 ...

豪阁的个人博客 1852

JavaScript数据类型和转化——JS

目录 1.数据类型 1.1为什么需要数据类型 1.2变量的数据类型 1.3数据类型分类 2.模板字符串(ES6新增),——模板字面量 2.1解析变量 2.2字符串可以换行 2.3调用函数 3.typeof和字面量 3.1typeof的使用 3.2字面量 4.数据类型的转换 4.1什么是数据类型 4.2转换为字符串类型 4.3转换为数字型 4.4转换为布尔型 1.数据类型 1.1为什么需要数据类型 因为不同数据所占用的存储空间不同,为了便于把数据分成所需内存大小

孙宇航的博客 1227

JavaScript系列-07 JS数据类型之undefined类型

javaScript系列 JS的数据类型 文章目录javaScript系列前言一、undefined数据类型1.1简单了解 前言 虽然js在变量声明的时候无需指定数据类型,但是在赋值的时候,每个数据还是有属于自己的数据类型。所以还是有了解的必要 一、undefined数据类型 1.1简单了解 Undefined类型只有一个值,这个值就是 undefined 当一个变量没有手动赋值,系统默认赋值undefined 或者也可以给一个变量手动赋值undefined。 <script typ

m0_46222379的博客 252

【Js】JavaScript数据类型隐式转换

类型相同基本类型,直接比较值引用类型比较指针类型不同,尝试转成number类型,先调用valueOf()转成number不行就再用toString()方法转成stringnull、NaN、undefined单独一套规则。

m0_57135756的博客 1万+

JavaScript 学习手册二:JS 数据类型

第1关:JavaScript 数据类型介绍 任务描述 本关任务:在函数 objectTest() 内部定义了六个变量 a、b、c、d、e、f,并已经赋值,你需要判断它们各是什么数据类型。变量 aType、bType、cType、dType、eType、fType 分别表示上面六个变量的数据类型的名字,你需要给他们赋值。比如变量 a 如果是数字类型,需要给变量 aType 赋值字符串 number。可选的数据类型名如下: number、string、bool、object、undefined 和 arra

weixin_54327001的博客 8432

【JavaScript基础】JS中的数据类型

基本数据类型 Js中的基本数据类型有五种:Undefined、Null、Boolean、Number、String 1. Undefined Undefined类型只有undefined一个值,在使用var声明变量但是未进行初始化的时候,该变量的值就是undefined。 2. Null Null类型也同样只有null一个值,表示一个空对象指针。undefined其实也是派生自null值的,但是null和undefined的含义完全不同。 3. Boolean Boolean类型有true和false两个值

VoidD的博客 312

JS初识 JavaScript变量 数据类型

变量作用域:分为全局作用域和局部作用域,函数外部和函数内部使用var声明的变量写在函数内部就是局部变量 仅当前作用域可见,声明在函数外部的变量就是全局变量 所有作用域可见,写在函数内部但是前面不加声明变量关键字就是全局变量。值类型(基本数据类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(唯一)、bigInt(+n)。注释、变量、操作符、流程控制语句、数组、对象、函数....的轻量级,解释型或即时编译型的编程语言。

qq_53402777的博客 334

初识JS/JavaScript及其数据类型

1.ECMAScript 核心js 基础语法和内置对象函数。2.DOM(Document Object Model)文档对象模型。3.BOM(Browser Object Model)浏览器对象模型。js是一门函数优先,具有原型编程的一门需要解释器解析的编程语言。

狗头苏丹的博客 367

Js高级总结1 JavaScript数据类型

typeof:返回数据类型的字符串表达,可以判断 undefined 数值 字符串 布尔值 function,不能判断 null object array。test.call/apply(obj):obj.test(),让一个函数成为任意指定对象的方法进行调用。n个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据。2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一引用变量依然指向前一对象。所有函数内部都有一个变量this,它的值是调用函数的当前对象。

weixin_54372875的博客 1070

【JavaScript】基础内容,HTML如何引用JavaScript, JS 常用的数据类型

注意数组返回是:object。

xudahai513的博客 628
上一篇: 指针数组
下一篇: js原型 原型链
SinceSpringOnU
博客等级 码龄7年 9粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值