浅谈Java和JavaScript中变量和数据类型的区别

关于变量

  • 不同之处

在Java中,因为其强类型语言的特性,声明变量需要明确该变量的类型,内存管理系统根据变量的类型为变量分配存储空间
在JavaScript中,声明变量不需要指定变量类型,只需使用var关键字;
不过在ES6的后续计划中,添加了let和const两个关键字用于声明不同作用的变量,但是依旧不需要声明变量类型
而且JavaScipt中的变量可以存储其他类型的变量的值,但是在Java中则有明确的类型要求,不过部分可以通过类型转换来存储其他类型的值
值得一提的是,虽然JavaScript不要求声明变量类型,但是可以通过new关键字来声明其类型

  • 相同之处

变量是用于存储信息的***容器***,所以他们都是需要申请内存来存储值,通过变量名可以引用值,也可以修改变量名的值
都是等号右边赋值给等号左边 😃
命名规则基本一致,具体参考下面的文章 Java和JavaScript命名规则
++a代表取++运算之后的值,a++表示取++运算之前的值

关于数据类型

  • 不同之处

提供的数据类型不同,具体可以参考下面 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码有兴趣的可以深入了解下
1种布尔类型boolean(false)
***注意!!!***数字类型的结尾字母不需要考虑大小写,都可以
在计算机中负数由补码进行表示,补码 = 源码取反 + 1,举个例子:
22,在计算机中的表示为:00010110;-22,取反:11101001,加1:11101010

  • 引用数据类型

String、对象、数组、类、接口 & .etc
所有引用类型的默认值都是null
一个引用变量可以用来引用任何与之兼容的类型

JavaScript数据类型:

  • 基本数据类型

字符串 String,单引号双引号包裹都可以
数字 Number,不分整数和小数,说实话这点写起来比Java爽,但是会有危险 😃
布尔 Boolean, true/false
空 Null,可以将变量值设置为null来清空值
未定义 Undefined,表示变量不含有值
Symbol,ES6中添加的新类型

  • 引用数据类型

对象 Object,由花括号分隔,在括号内部,对象的属性以名称和值对的形式name:value来定义,属性由逗号分隔
数组 Array,new一个或者直接赋值(隐式创建)
日期 Date,主要是日期时间的一些操作,不过日常工作中习惯用momentjs处理日期和时间
需要注意的一点
JavaScript中的类型是针对值来说,而不是针对变量

Java中的类型转换规则

隐式(默认)类型转换
基本类型的默认转换规则 byte/short/char -> int -> long -> float -> double
当byte/short/char相互之间不能转换,它们参与运算首先将转换成int类型再进行运算
数字和字符串相加,数字会自动装换成字符串
显示(强制)类型转换
目标类型 变量名 = (目标类型)被转换的类型
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算
有趣的例子
提问:Java是如何处理强制类型转换的溢出处理呢?
byte a = (byte)130
答:在计算机中,所有的数据都是存储的补码形式,那么130首先被当成int型存储,四个字节32位,
它的补码如下:0000 0000 0000 0000 0000 0000 1000 0010,转换为byte类型,进行截取,
高字节部分去除,保留低字节部分,得到转换为byte类型的补码为:1000 0010,
我们将其转换为源码:补码(1000 0010)-> 反码(1000 0001)-> 原码(1111 1110)为 -126,所以最后的答案是-126
————————————————
版权声明:本文为CSDN博主「fx67ll」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/PirateRaccoon/article/details/120853196

posted @ 2022-07-17 22:29  RHCHIK  阅读(104)  评论(0编辑  收藏  举报