8种基本数据类型
byte
- 8位
- max:127,min:-128
- default:0
- 应用:用在大型数组中节省空间
short
- 16位
- max:2^15 - 1,min:-(2^15)
- default:0
int
- 32位
- default:0
- java中整型变量默认用int
long
- 64位
- default:0L (理论上不区分L大小写,建议L)
float
- 32位
- default:0.0f
- 单精度
double
- 64位
- default:0.0d
- 双精度
char
- 16位
- default:0 (’\u0000’)
- char类型是一个单一的16位Unicode字符
- min:0(‘\u0000’),max:65535(‘\uFFFF’)
- 要用单引号,如 char no = ‘2’;
boolean
- 1位
- 取值 true或false
- default:false
类型转换
- 不能对boolean类型进行类型变换
- 低精度数据类型的变量可以自动类型转换为高精度类型的变量
- 高精度转低精度时必须用强转(强转会有精度损失)
- 转化可能导致溢出和精度损失
- 浮点数转整形,直接舍弃小数部分
- 数值的表示范围越大,精度越高
- 精度排位:byte < short < char < int < long < float < double
- long强转int,直接截取低位内容,符号位不变。
public class Main {
public static void main(String[] args){
long x = 0x101000000AL;
System.out.println(x);
System.out.println((int)x);
System.out.println((long)Math.pow(16, 7));
x = -0xFF1000000AL;
System.out.println(x);
System.out.println((int)x);
}
}
public class Main {
public static void main(String[] args){
short x = -1;
char c = (char)x;
System.out.println(c);
System.out.println((int)c);
System.out.println("========");
c = '\uFFFF';
System.out.println(c);
System.out.println((short)c);
}
}
引用数据类型
数据类型的内存分配
- java内存模型中,数据的保存分为两部分:heap和stack
- 基本类型的变量放在stack中
- 引用类型中,对象本身放在heap中,对象的引用(对象名和内存地址)放在stack中
- 引用就是指对象本身在heap中的地址