对于一门编程语言的学习,如果说第一步是安装环境,那么第二步一定是学习该语言的基本规则,变量和数据类型是首当其冲的JavaScipt,作为一门语言因Java的流行而得名,在很多方面与Java也有一定的相似之处,所以当我决定梳理和复习Java知识的时候,希望通过一篇对比文章顺便复习一下JavaScript。当然,写纯Java或纯JavaScript的文章还有一个原因。很多人都做过,再写真的没意义:)设计差异Java是一门完全面向对象的编程语言。要想用Java写东西,首先要设计对象;JavaScript则不同,它是一种基于对象的脚本语言,为开发者提供了大量的内部对象。为了更简单和省时,Java使用静态绑定。Java对象引用必须在编译时进行,编译器需要实现强类型检查;JavaScript是不同的,它使用动态链接,并且可以在运行时检查其对象引用。它们最本质的区别在于用途。Java目前广泛应用于PC、手机、互联网、数据中心等;将文本嵌入HTML页面,读写HTML元素,控制cookies等。设计差异参考这篇博文——Java和JavaScript的关系和区别。变量的不同在于Java中由于其强类型语言的特性,声明一个变量需要指定变量的类型,内存管理系统根据变量的类型为变量分配存储空间。在JavaScript中,声明一个变量不需要指定变量类型,只需要使用var关键字即可;但是在ES6的后续计划中,增加了两个关键字let和const来声明不同功能的变量,但是仍然不需要声明变量类型,JavaScript中的变量可以存储其他类型变量的值,但是在Java中有明确的类型要求,但是其他类型的部分值可以通过类型转换来存储。值得一提的是,JavaScript虽然不需要声明变量类型,但是可以通过new关键字来声明。变量是存储信息的容器,因此它们都需要申请内存来存储值。可以通过变量名来引用值,也可以修改变量名的值。等号右边的值赋值给等号左边:)命名规则基本相同。具体可以参考以下文章Java和JavaScript命名规则++a表示++运算后的值,a++表示++运算前的值Java和JavaScript命名规则变量命名必须以字母、下划线_或$开头,其他字符可以是字母、_、$或数字。变量名中不允许有空格和其他标点符号。第一个单词不能是数字,指的是第一个变量名长度不能超过255个字符注意!!!这是JavaScript的规则,Java指的是每个类型的大小范围变量名是区分大小写的,它是建议驼峰变量名必须放在同一行关键字不能用,具体有哪些?百度参考博文命名规则中的内容,参考这篇博文——js变量命名规则。difference提供了不同的数据类型,具体可以参考下面的Java数据类型&JavaScript数据类型,两篇文章不一样,具体可以参考下面的Java类型转换规则和JavaScript类型转换规则,两者文章一样,Java和JavaScript都分为基本数据类型和引用数据类型。Java数据类型基本数据类型8种基本类型,注意!!!下面的括号是6种数字类型的默认值,包括4种整数类型byte(0b)&short(0s)&int(0)&long(0L),2种浮点型float(0.0f)&double(0.0d)和1种字符类型char(无默认值,大小范围为\u0000-\uffff,相当于十进制0~65535),关于char值,需要说明的是字符A的十进制值为65,字符a的十进制值就是97,后面的字母依次依次加一,就有了ascii码的概念。有兴趣的可以详细了解下Boolean类型boolean(false)注意!!!数字型的结尾字母不需要考虑大小写,在计算机中可以用负数补码表示,补码=源码反码+1,例如:22,在计算机中表示为:00010110;-22,反转:11101001,添加1:11101010引用数据类型String,object,array,class,Interface&.etc所有引用类型的默认值为null引用变量可以用来引用任何兼容类型</span>JavaScript数据类型基本数据类型stringString,单引号和双引号都可以包数字Number,不分整数和小数,说实话,这比Java酷,但是会很危险:)Boolean,true/falseemptyNull,可以将变量值设置为null来清除值,在括号内,对象的属性以名称和值对名称:值的形式定义。属性之间用逗号隔开Array,新建一个或者直接赋值(隐式创建)Date,主要是对日期和时间的一些操作,但是在日常工作中习惯使用momentjs。日期和时间需要注意的一点JavaScript中的类型是针对值的,不是针对变量的默认转换规则是byte/short/char->int->long->float->double。当byte/short/char不能相互转换时,会先转换为int类型,然后再对数字和字符串进行运算。另外,数字会自动转换成字符串显示(强制)类型转换目标类型变量名=(目标类型)大容量数据类型转换为小容量数据类型时,添加强制转换字符,但是,它可能会导致精度降低或溢出。当存在多种类型的数据混合运算时,系统会先自动将所有数据转换为容量最大的数据类型,然后进行计算。有趣的示例问题:Java如何处理强制类型?转换的溢出处理如何?bytea=(byte)130答案:在计算机中,所有的数据都是以补码的形式存储的,所以首先将130存储为int类型,4个字节32位,其补码如下:00000000000000000000000010000010,转为字节类型,截取,去掉高字节部分,保留低字节部分,得到转为字节类型的补码:10000010,我们转为源码:补码(10000010)->反码(10000001)->原码(11111110)为-126,所以最终答案为-126参考JavaScript中的类型转换规则JavaScript是弱类型语言,变量类型完全由当前值决定.类型称为弱类型。首先要记住的是JavaScript中类型转换的结果永远是基本类型,分为两种情况,基本类型和基本类型之间的转换,以及引用类型到基本类型的转换是不可能的。当基本类型转换为引用类型时,最常见的类型转换是转换为Number、String和Boolean。Java中主动类型转换常用的方法就在这里。感觉可以再写一篇专门的博文,后面加一个文件,到时候再加一个链接。有兴趣的同学可以先看看这篇文章。JavaScript中主动类型转换的常用方法,将其他类型的值(数字、布尔值、日期)转换为字符串。其中之一是使用toString()将字符串转换为数字,并使用parseInt()进行转换。整数,parseFloat()转为浮点数,整数和浮点数都是Number类型。要将布尔值转换为数字,可以使用Number()方法。当JavaScript尝试对错误的数据类型进行操作时,它会自动转换为正确的数据类型。例子:5+null//返回数字5,null转为0例如:'5'+null//返回字符串5null,null转为'null'其他例子在字符串类型数字和数字类型之间numbers之间的运算会转换成数字运算,其他类型的值会转换成Boolean类型原始类型的值转换方法。这六种undefined/null/-0/0/NaN/emptystrings都是false,其他都是true。对象的boolean值为true,即使false对应的boolean值对象也为true,空对象和空数组也为true例如:console.log(Boolean(newBoolean(false)))//输出true隐式类型转换是系统在执行操作时自动进行的,但是调用的方法都是显式类型转换方法。一元运算符+可以将字符串隐式转换为数字。如果变量不能转换为数字,它仍然会变成数字,但值将是NaN,例如:vara=5;控制台日志(c=+a);//输出数字5,例如:varb='abc';合作社nsole.log(b=+abc);//输出NaN-*/%(减号、乘号、除号、余数)运算时,会通过Number()将数据转为Number类型,然后运算&&||!(andornotoperator)会通过Boolean()将数据转换成Boolean类型,然后进行操作<><=>===!=(comparisonoperator)操作,当数字与字符串比较大小时,它会隐式的把字符串转成Number类型进行比较,在比较字符串和字符串的大小时,比较的是ascii码的大小,最后返回的是一个布尔值注意!!!在比较运算符中,undefined和null不会进行类型转换,只有相等的值才会返回true注意!!!全局isNaN()函数会通过Number()将测试值转为数字,然后进行测试,但是Number.isNaN()不会将值转为数字,对于任何非数字都不会返回true价值。如果用==来判断两个值是否相等,因为会发生隐式类型转换,存在很大的漏洞,为了解决这个问题,引入===(绝对相等)和!==(绝对不等于)参考1,参考2我是fx67ll.com,如果您发现本文有错误,欢迎在评论区讨论指正,感谢阅读!如果您喜欢本文,欢迎访问我本文的github仓库地址,并为我点个Star,谢谢~:)转发请注明参考文章地址,万分感谢!!!