java基础知识-基本数据类型、数据类型转换
一、基本数据类型
基本的数据类型一共有四类八种
1、整型
byte: 1字节 取值范围 -128~127
short: 2字节 取值范围 -32768~32767
int: 4字节 取值范围 负2的31次方到正的2的31次方减1
long: 8字节 取值范围 负2的63次方到正的2的63次方减1 长整型必须要有后缀L 例 400000L
取值范围计算方法
问:1个字节占8位,为什么byte类型取值范围是2的7次方而不是2的8次方?
答: 因为正负符号占了一位所以只剩下7位。(符号位占的是从左往右数第一位,也就是最高位)
问:为什么正数范围要减去1
答:因为第一位是从零开始算起的。
2、浮点型
float (单精度): 4字节 取值范围 爱多少多少 必须接后缀F才能表示它是float类型 例:3.14F
double(双精度): 8字节 取值范围 爱多少多少 后缀D或者没后缀
3、逻辑型
boolean: 只有个两个值 ture和false
4、字符型
char: 2字节 取值范围是0-65535 没有负数 存储Unicode码,用单引号赋值。
(与C语言char的区别:C语言的char应用的是ASCII码 1个字节 范围0-127 )
程序中尽量避免使用char类型(java核心技术 卷1)
引申:这四类八种基本数据类型的数据都存放在栈内存空间,占一块内存。
二、数据类型转换
分为自动转换和强制转换
自动转换(隐式转换)
当把一个优先级低的类型赋值给优先级高的类型时就会进行自动转换
低---------------------------------------------高
byte,short,char<int <long < float < double
int、long、float、double按照取值范围大小排序
而前三个数据类型需要强制转换?????????????
顺序记不住? 网上有人这么记: 办事处in理发店。
强制转换(显示转换)
把取值范围大的类型转成取值范围小的类型需要进行强制转换。
用 ( )来进行数据的强制转换
例:
int a; double x=3.3; short y=3; a=(int)x+(int)3.5; a=(int)x+y;// y优先级低于a所以不需要转换
等号的右边完成强制后再赋值给左边。
注意:等号右边每一项(由加号连接的数字或变量)的优先级都必须小于等于等号左边变量的优先级,否则编译期间会报错。