Java是强类型语言,针对每一种数据都提供了类型
Java Script是弱语言,只有var(因为要适用于浏览器,而浏览器具有很高的容错性)
八大基本数据类型
数据类型 | 字节大小(最高位符号位不计入2^x计算) | 取值范围 |
---|---|---|
byte | 1(0000 0000) | -128~127 |
short | 2(0000 0000 0000 0000) | -32768~32767 |
int | 4(4*8bit) | -231~231-1 |
long | 8(8*8bit) | -263~263-1 |
float | 4 | 浮点数与整数存储方式不同 |
double | 8 | 浮点数与整数存储方式不同 |
char | 2(无负数) | 0~65535(2^16) |
boolean | 1(0000 0000;0000 0001) | false;ture |
char类型
- 当用单引号包含数字时,该数字表示字符,若直接输出结果为该数字,若进行运算则先自动转为该数字对应的ASCII码数值再运算
- 当不用单引号包含数字时,该数字即为ASCII码,若直接输出则结果为对应字符,若运算则由该数进行
强制类型转换
将范围小的类型赋值给范围大的类型,不需要强转。如小水杯的水倒入到大水杯中(自动类型转换)
将范围大的类型赋值给范围小的类型,需要强制类型转换。如将大水杯的水倒入小水杯中。
注意:强制类型转换可能出现两种情况
a.精度丢失
例如:
int x= (int)12.5;
System.out.println(x);
解析:结果i的值为12,小数点的数据丢失
b.数据溢出
例如:
byte b = (byte)128;//byte类型最大为127
System.out.println(b);
解析:结果为 -128,数据溢出
变量计算问题和常量计算问题
- char,short,byte在参与运算的时候会自动转换为int类型来计算
例如:
byte by=10;
short ss1=20;
short ss2=by+ss1; //正确:short ss2=(short)(by+ss1);
System.out.println(ch2);
解析:int类型转换错误。由于(by+ss1)为变量,转为int类
-
变量相加,系统无法判断具体的结果
常量相加,在编译时期,系统就会计算结果
例如:
char ch1='a';
byte by=1;
char ch2=ch1+by;
System.out.println(ch2);
解析:int类型转换错误。由于(ch1+by)为变量,转为int类型,int取值范围大于char
例如:
char ch1='a';
byte by=1;
char ch2='a'+1;
System.out.println(ch2);
解析:b。