13、java中8中基本类型
一、基本类型介绍
关键字 | 数据类型 | 占用字节数 | 取值范围 | 默认值 |
byte | 字节型 | 1个字节 | -128~127 | 0 |
char | 字符型 | 2个字节 | Unicode0~Unicode215-1 | \u0000 |
short | 短整型 | 2个字节 | -215~215-1 | 0 |
int | 整型 | 4个字节 | -231~231-1 | 0 |
long | 长整型 | 8个字节 | -263~263-1 | 0 |
float | 单精度浮点数 | 4个字节 | -2128~2128 | 0.0 |
double | 双精度浮点数 | 8个字节 | -21024~21024 | 0.0 |
boolean | 布尔型 | 1个字节 | true|false | false |
float与double的范围和精度
范围
float: 1bit(符号位) 8bit(指数位) 23bit(尾数为)
double: 1bit(符号位) 11bit(指数位) 52bit(尾数为)
float的指数范围 -127~128,而double的指数范围-1023~1024
float的范围为-2128~2128,也即-3.40E+38 ~ +3.40E+38;double的范围为-21024~21024,也即-1.79E+308 ~ +1.79E+308
精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:223 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:252 = 4503599627370496,一共16位,同理,double的精度为15~16位。
基本类型赋值
byte:
byte b=1;
byte a=1+2;
short
short s=1;
char
char a='A'; //直接用字符赋值char b=65; //用10进制数字赋值
char c='\u0041'; //使用unicode码赋值
char d=0x0041; //使用16进制赋值
char e=0101; //使用8进制赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
上面输出的都是是字符'A'
int
int a=3;
long
long a=1;long b=10000000000l;
//如果赋值范围超过了int,就必须在后面加上字母l或者L
float
float a=1.2f;
double
double a=1.2;
二、基本类型运算
1、java中byte、short和char类型运算操作首先会把这些值转换成int类型,然后对这些int值进行运算,返回int类型。
byte a=1;byte b=2;
byte c=a+b; 这里先将a和b转换成int类型在进行计算,结果返回int类型,所以这里结果不正确
可以改为:
int c=a+b;
或者
byte c=(byte)(a+b); 当然这里不能操作byte范围
byte a=1;char b='B';
int c=a+b;
System.out.println(c);
输出为67 现将a=1和b='B'转换成int型 a=1、b=66 所以结果为67
2、在做除法运算时,如果两边除数和被除数都是整数,其结果也为整数(只保留整数部分)例如:
int a=10;int b=3;
System.out.println(a/b);
结果为:3
3、在做除服运算时,两个操作数其中有一个是浮点数,计算结果也是浮点数。而且允许除数是0或者0.0,得到结果正无穷或负无穷
double a=5;int b=5;
System.out.println(a/0); //结果为正无穷:Infinity
System.out.println(-a/0); //结果为负无穷:-Infinity
System.out.println(b/0); //抛出异常:java.lang.ArithmeticException: / by zero
System.out.println(0/0.0); //结果为:NaN
System.out.println(0.0/0); //结果为NaN
基本类型常见面试题
以上是 13、java中8中基本类型 的全部内容, 来源链接: utcz.com/389913.html