强类型语言
要求变量的使用要严格符合规定,所有变量都必须限定以后才能使用
弱类型语言
Java的数据类型分为两大类
-
基本类型(primitive type)
- byte 占1字节范围: -128 - 127
- short 占2个字节范围: -32768 - 32767
- int 占4个字节范围: …
- long 占8个字节范围: …
- float 占4个字节
- double 占8个字节
- char 占2个字节
- boolean 占1个位 只有 true和false
-
引用类型(reference type)
- 类
- 接口
- 数组
数据类型扩展
- 整数拓展
进制 二进制(0b) 八进制(0) 十六进制(0x) - 浮点数拓展
银行业务表示:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); // false
float d1 = 32320432492f;
float d2 = d1+1;
System.out.println(d1==d2); // true
float 有限 离散 舍入误差 大约 接近但不等于
最好完全使用避免使用浮点数进行比较(数学工具类BigDecimal)
- 字符拓展
字符的本质还是数字 表示成 Unicode
类型转换
- 由于Java是强类型的语言,所以要进行有些运算的时候,需要用到类型转换
由低到高: byte, short, char -> int -> long -> float -> double - 运算中,不同类型的数据优先转化为同一类型,再进行运算
- 强制类型转换(高->低)
int i = 100;
byte b = (byte)i;
- 自动类型转换(低->高)
int i = 100;
double b = i;
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或精度问题
// 操作比较大的数的时候注意溢出问题(解决:先把一个数转换为long)
// jdk7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
long total = money*((long)years);