数据类型、类型转换

1.数据类型

八大基本数据类型

  • byte占1个字节范围:-128——127
  • short占2个字节范围:-32768——32767
  • int占4个字节范围:-232——232-1
  • long占1个字节范围:-264——264-1
  • float占4个字节
  • double占8个字节
  • char占2个字
  • boolean占1个位,其值只有true和false
long类型要在数字后面加上L/l
float类型要在数字后面加上F/f
  • 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数;
  • 字节(byte):是计算机中数据处理的基本单位;
    1B(byte)= 8bit
  • 字符:是指计算机中使用的字母、数字、字和符号;

整数拓展

//整数拓展:二进制0b  十进制  八进制0  十六进制0x
int i1 = 10;
int i2 = 010;//八进制0
int i3 = 0x10;//十六进制0x
System.out.println(i1);//10
System.out.println(i2);//8
System.out.println(i3);//16

浮点数拓展

//浮点数拓展:离散  舍入误差  丢失精度
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//false
float f1 = 2323112321312f;
float f2 = f1 + 1;
System.out.println(f1==f2);//true

字符拓展

//字符拓展:编码  Unicode表  A-Z<a-z
//U0000  UFFFF
char c1 = 'a';
System.out.println((int)c1);//97
char c2 = '中';
System.out.println((int)c2);//20013
char c3 = '\u0061';
System.out.println(c3);//a

转义字符:\t \n \r…

2.类型转换

  • 自动类型转换:容量小的类型自动转换为容量大的数据类型。
  • 强制类型转换:将容量大的数据类型转换为容量小的数据类型。(可能造成精度降低或溢出)

Java中为什么给float类型变量赋值需要加F,而给byte、short赋值的时候却不需要呢?

JVM规范中所说,并没有说byte、short、int等占多少个字节,而是真正的有效位是多少。比如byte的有效位是1个字节,也就是-128到127。使用Java编程的时候,就只能用byte表示-128到127之间的数,而真正JVM实现,一般byte还是占用和int一样大小:4个字节。
也就说在JVM看来,byte、short、int都是同一个东西。

这也就解释了为什么byte,short使用int字面量赋值的时候会不用强制转型。

byte a = 2;
short b = 3;

因为编译器在编译的只需要根据字面值2,字面值3来确定是否超过有效值即可,并不用做深入的检查,因为他们在JVM存在的类型也是一样的。

byte a = 128;//溢出

然而double和float在JVM中存储是不一样的。

System.out.println(3.2f==3.2);//false

因此在使用double给float赋值的时候,会报错的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值