强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
Java的数据类型分为两大类
基本类型(primitive type)
数值类型
整数类型
byte占1个字节范围:-128-127short占2个字节范围:-32768-23768int占4个字节范围:-2147483648-2147483648long占8个字节范围:-9223372036854775808-9223372036854775808 浮点类型
float占4个字节double占8个字节 字符类型char占2个字符 boolean类型:占1位其值只有true和false两个
引用类型(reference type)
类
StringBigDecimal 数学工具类 接口数组
面试题:Java基础八大类型有哪些?
扩展
整数扩展
//进制: 二进制0b 十进制 八进制0 十六进制0x int i = 10; int i2 = 010; //八进制0 int i3 = 0x10; // 十六进制0x 0~9 A~F 16
浮点数
// float 有限 离散 舍入误差 大约 接近但不等于
// 最好不要使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
if(f==d){}//返回false
float d1 = 12321312312312f;
flaot d2 = d1+1;
if(d1==d2){}//返回true
面试题:银行业务怎么表示?钱
DigDecimal 数学工具类
字符
char c1 = 'A'; char c2 = '中'; System.out.println((int)c1); //强制转换成Unicode对应的数值 System.out.println((int)c2); //强制转换成Unicode对应的数值 char c3 = 'u0061'; System.out.println(c3);//a
转义字符
n 换行t 制表符
布尔值扩展
boolean flag = true
if(flage){
}
类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低 --------------------------------> 高 byte,short,char-> int -> long -> float -> double
运算中,不同类型的数据先转换为同一类型,然后进行运算。
强制转换和自动类型转换
// 强制转换 (类型)变量名 高-->低
int i = 128
byte b = (baye)i; //内存溢出,byte最大值为127
// 自动转换 低-->高
int i = 128
double i =i;
// 精度问题,小数点后面的数丢失
System.out.println((int)23.7) // 23
System.out.println((int)-45.89f) // -45
// char的强制转换
char c ='a';
int d = c+1;
System.out.println(d); // 输出98
System.out.println((char)d); // 输出b
注意点:
- 不能对布尔值进行转换不能把对象类型转换为不相干的类型在把高容量转换到低容量的时候,需要强制转换转换的时候可能存在内存溢出,或者精度的问题
// 操作比较大的数的时候,注意溢出问题 // JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money*years; // -1474836480,计算是已经溢出 long total2 = money*years; // 默认是int,转换之前就已经存在问题 // 解决方式 long total2 = money*((long)years); // 先吧一个数转换为long



