1、java的数据类型分类
整数类型
byte: 可以说是java中最少的数据类型了,它在内存中占用1个字节,也就是8位(bit),值得范围是:-128~127,也就是-2的7次方到2的7次方减一,默认值是0.
short: 短整型,它在内存中占用的是2个字节,16位,值得取值范围是-32768~32767,也就是-2的15次方到2的15次方减一,默认值也是0.
int: 整型,在内存中占4个字节,32位,值得取值范围是-2147483648~2147483647,也就是-2的31次方到2的31次方减一,默认值还是0。
long: 长整型,在内存中占8个字节,64位,值的取值范围是-2的63次方到2的63次方减一,默认值要注意了,因为是长整型, 所以默认是虽说是0,但是准确的说是0L,必须要加上L来表示它是long类型,不加就成了int类型了.
数据类型可以从低精度转向高精度,但返之则不可 byte<short<int<long<float<double
注意:在声明long类型的常量时,通常在后面加上l或者L(通常用L,因为l会误认为数据1),如果没有声明的话,默认会是INT类型
字符串类型
char 字符类型,它在内存中占用2个字节,也就是16 bit,因为java本身的字符集不是用ASCII码来存储的, 而是用的16位的Unicode字符集,所以它的字符存储范围也就是'u0000 -- uffff',默认值呢?就是'u0000'
示例:
int res = 'a' + 'b'; 会把所对应的字符串转化成ASCII码进行计算 得出的结果是195
char res = 'a' + 'b'; 结果输出 ? 计算过程会把a与b转成ASCII码计算得出195,但是ascii码中没有对应的195的字符,所以返回的是?
注意:这里的char表示一个字符,是用来表示Unicode里的字节通常用单引号 ''来表示; char在计算的时候通常会转成ascii码进行计算,所以可以当成整型进行处理,而string是用来表示字符串通常用双引号 "" 来表示具体示例如下,
public class Hello { public static void main (String args[]) { String A = "this is test"; //字符串 char b = 'a'; //字符 } }
浮点类型
不声明小数类型的情况下,默认为double
float : 单精度浮点型, 在内存中占4个字节,32位,主要用来存储小数的,但是有限制,有效小数位只有7位,默认是0.0f ,取值范围是:3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示 乘以10的负45次方) =》 不能表示一个精确的值, 会损失精度。
double: 双精度浮点型,在内存中占8个字节,64位,也是用来存储小数的,精度是float的两倍,默认是0.0,取值范围是1.797693e+308 到4.9000000e-324(e+308表示是乘以10的308次方,同样,e-324表示乘以10的负324次方)
注意: 浮点默认为double,如果需要变为float, 需要在后面加F/f如果3.14f;
浮点数存在舍入误差,很多数字不能精确表示,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
布尔数据类型
boolean 存储的时候占一位
boolean有两个值:true 和 false;
boolean用来判断逻辑条件,一般用于程序流程控制