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赋值的时候,会报错的。

本文由mdnice多平台发布

原文地址:http://www.cnblogs.com/CGB1804Great/p/16884649.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性