以前对这些概念老是弄混淆,在这里补一下基础,对比一下加深印象。
1.Java的基本数据类型
1)概念:
Java中的简单类型从概念上分为四种:实数、整数、字符、布尔值。但是有一点需要说明的是,Java里面只有八种原始类型,其列表如下:
实数:double、float
整数:byte、short、int、long
字符:char
布尔值:boolean
复杂类型和基本类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:所有的简单数据类型不存在“引用”的概念,简单数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面只有这八种数据类型是这种存储模型;而其他的只要是继承于Object类的复杂数据类型都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。
2)详细介绍:
Java的简单数据讲解列表如下:
int:int为整数类型,在存储的时候,用4个字节存储,范围为-2,147,483,648到2,147,483,647,在变量初始化的时候,int类型的默认值为0。
short:short也属于整数类型,在存储的时候,用2个字节存储,范围为-32,768到32,767,在变量初始化的时候,short类型的默认值为0,一般情况下,因为Java本身转型的原因,可以直接写为0。
long:long也属于整数类型,在存储的时候,用8个字节存储,范围为-9,223,372,036,854,775,808到9,223,372,036, 854,775,807,在变量初始化的时候,long类型的默认值为0L或0l,也可直接写为0。 byte:byte同样属于整数类型,在存储的时候,用1个字节来存储,范围为-128到127,在变量初始化的时候,byte类型的默认值也为0。
float:float属于实数类型,在存储的时候,用4个字节来存储,范围为32位IEEEE 754单精度范围,在变量初始化的时候,float的默认值为0.0f或0.0F,在初始化的时候可以写0.0。
double:double同样属于实数类型,在存储的时候,用8个字节来存储,范围为64位IEEE 754双精度范围,在变量初始化的时候,double的默认值为0.0。
char:char属于字符类型,在存储的时候用2个字节来存储,因为Java本身的字符集不是用ASCII码来进行存储,是使用的16位Unicode字符集,它的字符范围即是Unicode的字符范围,在变量初始化的时候,char类型的默认值为'u0000'。
boolean:boolean属于布尔类型,在存储的时候不使用字节,仅仅使用1位来存储,范围仅仅为0和1,其字面量为true和false,而boolean变量在初始化的时候变量的默认值为false。
2.JS的数据类型
JavaScript一共有9种数据类型:
未定义:Undefined
空:Null
布尔型:Boolean
字符串:String
数值:Number
对象:Object
引用:Reference
列表:List
完成:Completion
其中后三种类型是在JavaScript运行事中间结果的数据类型,因此不能在代码中使用。
对于字符串:
字符串中引号可以是单引号也可以是双引号,效果一样。根据爱好选择,但是要保持良好习惯,争取在脚本中保持一致。
charAt() 获取指定位置的字符,第1个字符位置是0;
slice()和substring()接受两个参数,返回其间的字符,不包括终止字符。其区别主要体现在对负数的处理。
slice()从字符串末尾往前计数。
substring()则是把负数忽略,作为0处理,并将俩数中的小值作为起始值。即substring(2,-3)等同于substring(2,0),也是substring(0,2)。
而substr()则是把始末的字符都算进字符串长度中。
indexOf()和lastIndexOf()
区别在前者从前往后搜,后者相反,都是从0开始,找不大返回-1.