Java(三)数据类型补充

数据类型

整数型
数据类型占用空间大小默认值取值范围
byte10[-128~127]
short20[-32768~32767]
int40[-2147483648~2147483647]
long80L[]

1、java语言当中的“整数型字面值”被默认当做int类型来处理。要让这个“整数型字面值”被当做long类型执行的话,需要在“整数型在面试”后面添加l/L,建议用大写的L
2、java语言当中的整数型字面值有三种表示方式:
第一种:十进制【默认的方式】
第二种:八进制【在编写八进制整数型字面值的时候需要以0开始】
第三种:十六进制【在编写十六进制整数型字面值的时候余姚以0x开始】

int a = 10;
int b = 010;//整数型字面值以0开头的,一般表示八进制
int c = 0x10;//整数型字面值以0x开头的,一般表示十六进制
System.out.println(a);//输出10
System.out.println(b);//输出8
System.out.println(c);//输出16
  • 注意:输出的时候都是以十进制的形式
int i = 123;
//整数型字面值123和变量i都是int类型
//将int类型的123赋值给int类型的变量i,不存在类型转换
System.out.println(i);

long x = 456;
//整数型字面值456赋值给long类型的x,存在类型转换
//int类型占4个字节,long占8个字节
//小容量可以自动转换成大容量,称为自动类型转换机制。
System.out.println(x);

long y = 2147483647;
System.out.println(y);//运行正确
/*
long z = 214748648;//214748648被当做int字节处理,但是其字面值超出int类型范围
System.out.println(z);//运行错误
*/
//解决办法:将其当做long类型处理,在字面值后面面添加L
long z = 214748648;
System.out.println(z);//不存在类型转换,运行正确
  • 大容量不能直接转换成小容量,需要加上“强制类型转换符”,但是这样可能会造成精度损失。
long k = 2147483648L;
int  e = (int)k;
System.out.println(e);//结果为-2147483648,损失精度非常严重
  • 强转原理:
    例如:8个字节的int类型转换成4个字节的long就是将int类型的左边的4个字节删掉,就会得到4个字节的long类型。
  • 特例:
    当一个字面值不超过byte、short、char类型的取值范围,这个字面值可以直接转换成对应的类型。
//举例
byte a1 = 127;运行正确
byte a2 = 128;运行错误,需要在128前面加强制类型转换符(byte),编译会损失精度转换之后输出a2是-128
  • 精度损失
    计算机在存储数据是都是存的补码,输出是将补码转换成原码,
  • 求给定数值的补码
    正数:
    正整数的补码与原码相同
    负数:
    将其对应正数的二进制所有位取反后加1
浮点型
float单精度4个字节
double双精度8个字节
  • 注意:double 和 float 在计算机内部二进制储存的时候都是储存的浸近似值(无法储存无限的小数)

在java语言中所有的浮点型字面值,默认被当做double类型来处理,要想该字面值当做float类型来处理,需要在字面值的后面添加F/f

double b1 = 3.0;//不存在类型转换,编译正确
float b2 = 4.0;//编译错误
//修改错误有以下两种方法
float b3 = (float)4.0;//强制转换
float b4 = 4.0f;//不存在类型转换,4.0就是flaot类型
布尔型
booolean:truefalse
10

布尔类型占用一个字节,但是在实际开发中非常重要,经常使用在逻辑运算和条件控制语句中。

转换规则

关于基本数据类型之间的互相转换:
1、八种基本数据类型当中除了布尔类型之外剩下的7种类型之间都可以互相转换
2、小容量向大容量转换,称为自动类型转换
容量从小到大排序为:
byte < short < int < long < float < double
注意:任何浮点类型不管占用多少个字节,都比整数型容量大
char和short可以表示的种类数量相同,但是char可以取更大的正整数
3、大容量向小容量转换,叫做强制类型转换,需要加强制类型转换符,运行阶段可能会损失精度,谨慎使用
4、当整数字面值没有超过byte、short、char类型的取值范围,这个字面值可以直接赋值给byte、short、char类型的变量。
5、byte、short、char混合运算的时候,各自先转换成int类型在做运算。
6、多种数据类型混合运算,先转换成容量最大的那种类型再做运算。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值