Java数据类型的转化
数据类型:根据变量值存储的数据,在计算机中存储方式的不同,进行分类
| 数据类型 | |
| 基本数据类型 | 布尔类型/数值类型/字符串类型/undefined/null |
| 引用数据类型 | 数组/对象/函数 |
数据类型转化有自动转化和强制类型转化。
1.自动转化为布尔类型
在执行if判断的时候,布尔类型之外的类型会自动转化为布尔类型。
转化原则:转化false的有 :0、" "、undefined、null、NaN
转化为true:其他的转化为true。
<script>
if(''){
console.log('转为了true');
}else{
console.log('转为了false');
}
</script>
结果为:

2.自动转化为字符串
在执行字符串拼接时,会将其他数据类型转化为字符串类型。
<script>
var str1="文字" + 123;
console.log(str1);
var str2="文字" + 2e3;
console.log(str2);
</script>
结果为:
注:科学技术法会解析为数值后,再转化成数值。
- 数组/对象/函数转字符串的原则
<script>
var str1="文字" + [1,2,3,4,5];
console.log(str1);
var str2="文字" + {name:'张三' , age:'20'};
console.log(str2);
var str3="文字" + function fun(){console.log(123)};
console.log(str3);
</script>
结果为:

数组:将括号中的内容转化为字符串拼接;
对象:对象会转化为[object Object];
函数:函数的整个程序代码转化为字符串拼接。
3.自动转化为数值
在执行数学运算时,会触发数据类型转化。
转化原则:
布尔类型:true→1;
false→0;
undefined→NaN;
null→0;
字符串:如果是纯数字的字符串或者符合科学计数法→对应的数值;
如果不符合数字规范的内容→NaN;
数组/对象/函数:如果是+运算,执行字符串拼接;
如果是其他运算,结果为NaN;
- 数值类型
<script>
var a=100 - true;
var b=100 - false;
var c=100 - undefined;
var d=100-null;
console.log(a,b,c,d);
</script>
结果为:

- 字符串
<script>
var a=100 - '100';
console.log(a);
var b=100 - '1.23';
console.log(b);
var c=100 - '2e3';
console.log(c);
var d=100 - '123abc';
console.log(d);
</script>
结果为:

- 数组/对象/函数:
<script> console.log(100 + [1,2,3]); console.log(100 - [1,2,3]); console.log(100 + {name:'张三' , age:'20'}); console.log(100 - {name:'张三' , age:'20'}); console.log(100 + function fun(){console.log(123)}); console.log(100 - function fun(){console.log(123)}); </script>
结果为:

4.强制转化为布尔类型
方法:Boolean(数据/变量)
转换原则(同自动转化): 0、 ' ' 、undefined、null、NaN →false;
其他类型→true。
<script> console.log(Boolean(undefined)); console.log(Boolean(100)); </script>
结果为:
5.强制转化为字符串类型
方法一:变量 . toString(进制类型)
<script>
var a=100;
console.log(a.toString(2));
console.log(a.toString(8));
console.log(a.toString(16));
</script>
结果为:

方法二:String(变量/数据)
转化原则同自动转换。
<script>
var a=2e3;
console.log(String(a));
var b=[1,2,3];
console.log(String(b));
</script>
结果为:
输出颜色为黑色表示是字符串类型。
6.强制转化为数值类型
方法一:Number(变量/数值)
转化原则同自动转化。
<script> console.log(Number(true)); console.log(Number(false)); console.log(Number(null)); console.log(Number(undefined)); console.log(Number('100')); console.log(Number('2e3')); console.log(Number('123abc')); console.log(Number([1,2,3])); console.log(Number({name:'张三'})); console.log(Number(function fun(){console.log(123)})); </script>
结果为:

方法二:parseInt(变量/数据)
获取变量或数据的整数部分。
<script> console.log(parseInt(10)); console.log(parseInt(0.1)); console.log(parseInt(2e3)); console.log(parseInt('2e3')); //字符串中的科学及算法不会解析 </script>
结果为:

- true/false/对象/函数转化为NaN
<script> console.log(parseInt(true)); console.log(parseInt(false)); console.log(parseInt({name:'张三'})); console.log(parseInt(function fun(){console.log(123)})); </script>
结果为:

- 数组
<script> console.log(parseInt([1,2,3])); console.log(parseInt([null,1,2,3])); </script>
结果为:
数组转换按数组中第一个数值转化
方法三:parseFloat(变量/数据)
获取浮点数部分。
- false/true/null……转化结果为NaN
- 数值:整数、浮点完整转化
<script> console.log(parseFloat(10)); console.log(parseFloat(1.23)); console.log(parseFloat(2e3)); </script>
结果为:

- 字符串:从字符左起解析符合浮点数的部分。
<script> console.log(parseFloat('1.23')); console.log(parseFloat('1.2345e3')); //字符串中的科学计数法会被解析 console.log(parseFloat('123abc')); </script>
结果为:

(逆战班学习)


浙公网安备 33010602011771号