JavaScript入门指南---(五)、数据类型

什么是数据类型?

“数据类型”,表示了变量包含数据的本质特征,我们在写代码的时候,使用的都是变量的形式去做各种各样的操作.那么变量中就包含着我们使用或操作的数据.比如字符串变量包含一个字符串,数值变量包含一个数值等等.
JavaScript属于”宽松类型”的编程语言,JS变量在不同的场合可以被解释为不同的类型.
JS中,不必事先声明变量的数据类型就可以使用变量,JS的解释程序会根据场合,做出它认为正确的判断.这也就是为什么JS被称为弱类型语言.
JS是在运行时检查变量类型的,所以JS也是动态类型语言.

一,数值

整数

整数可以是正整数,负整数和0.

浮点数

就是带小数的数 小数部分可以为0 .
123.4e5:表示123.4乘10的5次幂.
0x作为前缀表示十六进制的数.

非数值(NaN)

当脚本尝试把一些非数值数据当做数值处理,却无法得到数值时,其返回值就是NaN.(eg:”20”转成整数20,”2x”转成整数就是NaN了)
可以通过isNaN(参数)的方法,检测是否为非数值.
isNaN(4):false
isNaN(“2x”):true

parseFloat()和parseInt()

这两个方法都可以将字符串转换成数值.
parseFloat会返回浮点数,parseInt会返回整数.
如果传入的参数以数字开头,那么会解析到数字结束,将解析到的内容返回.如果参数以非数值开头,那么会直接返回NaN.
parseFloat(“123.4”):123.4
parseFloat(“123xx2”):123
parseFloat(“123.0xx2”):123
parseFloat(“xx234xdf”):NaN
解析方式parseFloat与parseInt一致,只不过parseInt返回的是整数
但是parseInt可以接收第二个参数,可以指定数值的基(就是是几进制,可以指定是二进制数还是八进制或十六进制等)
parseInt(10.23,10):10
parseInt(“10xx”,10):10
parseInt(“0011”,2):3
parseInt(“xxx”):NaN

无穷大

大多数JS的版本中,支持的最大数值为2的53次幂,如果超出了这个数,那么就是无穷大:Infinity.
还有一个负数的无穷大:-Infinity.
通过isFinite(参数)方法可以检测参数值是否是有限的.会先判断是否可以将参数转换成数值,如果不能则返回false,可以的话再判断数值的大小.
isFinite(“xxx”):false
isFinite(2):true
isFinite(如果这里传入的数值大于2的53次幂):false

二,字符串

字符串是由特定字符集(通常是ASCII或通用字符集)里的字符组成的序列,通常用于保存文本内容.
字符串的定义是用一对单引号或一对双引号实现的;
var s1 = “this is a string”;
var s2 = “”; 表示一个空的字符串

转义序列

如果要在字符串中表示一些特殊字符(如制表符,换行符,单引号双引号等),需要以反斜线()作为开头来表示,这种组合方式就叫做转义字符.

转义序列代表的字符
\t制表符
\n换行符
\”双引号
\’单引号
\反斜线
\x99ASCII字符的值,2位十六进制表示
\u9999统一编码字符的值,以4位十六进制表示
字符串的方法
方法名描述
concat连接字符串,并且返回的是连接后的一个新的字符串对象
indexOf返回指定值在字符串中出现的第一个位置,如果不存在则返回-1
lastIndexOf返回指定值在字符串中出现的最后一个位置,如果不存在则返回-1
replace替换字符串中的内容
split根据参数分割,得到分割后的字符串数组
substr从指定位置开始,获取指定数量的字符组成一个新的字符串
toLowerCase转换成小写字母
toUpperCase转换成大写字母

注:字符串中的所以,第一个位置为0

三,布尔值

注: 如果将布尔值用于计算,那么JS会将true转换为1,将false转换为0;
注: JS将非0值当做true处理,将0值作为false处理.并且会将下面的值也当做false处理:未定义(undefined),null,0,NaN,”“(空的字符串)
上面的这些值通常称为”类假”,”不是确切的false,但是当做false处理”.

“非”操作符(!)

这就很简单了没什么特别的.

关于null与undefined(未定义)

当我们想给变量一个有效值,但是又不是一个具体的值的时候,就把null赋值给变量,null是一个关键字.对应数值变量来讲,null代表0,对应字符串来讲,null代表空字符串”“,对应布尔值来讲,null代表false.
undefined不是一个关键字,而是预定义的全局变量.当一个变量已经被使用了, 但是却没有被赋予任何值时,它的值不是0也不是null而是undefined,表示JS不能识别这个变量.

四,数组

数组这种数据类型,可以在一个变量里保存多个值,每个值都有一个数值索引,而且能够保存任何数据类型(包括数组类型).

创建新数组

var array1 = new Array();
var array2 = [];

初始化数组

创建数组时直接加载数据
var array3 = [‘First’,’Second’,’Third’];
创建之后再添加数据
var array4 = [];
array4[0] = ‘0’;
array4[1] = ‘1’;
注: JS中的数组和Java中的数组在这里就能看到差别了,Java中数组建立时要声明长度,建立后数组长度就不能再改变了,如果想要动态添加数据,要使用集合.但是 JS 中的数组,是可以动态添加数据的,并且还有下面的一个特性.
注: JS中的数组的长度的值总是比最大索引的值大1.举例:array4[70] = “我是第七十个元素”;
那么现在array4数组中,只有三个元素,分别在角标0,1,70的位置.
但是array4.length的值仍然为71.
注: 上述操作,在Java的集合中,是不ok的,比如下面的代码就会崩溃,数组越界异常.

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!");
        ArrayList<String> arrayList = new ArrayList();

        arrayList.add(70,"文档");

        System.out.println(arrayList.size());
    }
}
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 70, Size: 0
    at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:661)
    at java.util.ArrayList.add(ArrayList.java:473)
    at Main.main(Main.java:9)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Hello World!

Process finished with exit code 1
数组的方法

示例几个特殊一点的.
join():可以将数组的全部元素连接在一起,得到一个字符串,由,隔开.
join(参数):可以将数组的全部元素连接起来,并且每个元素之间,由参数隔开.
slice(start,end):参数中指定的是开始的索引值和要提取的数量,与String的substr()方法类似.
sort():该方法可以把数组元素按照字母顺序排序.
splice():该方法可以在数组里添加或删除指定的一个或多个元素.
splice()方法的参数:参数1,在什么位置开始操作,参数2,要删除多少个元素,参数3,要插入的新元素的列表

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值