1. 分类
基本数据类型
4 类 8 种 -->
逻辑型 boolean 文本型 char 整数型 byte short int long 浮点型 float double
引用数据类型
3类 -->
类 class 接口 interface 数组
2. 基本数据类型
<1> 数据提升:运算之前,先转换为高一级的数据类型再运算,规则如下:
byte short char ---> int ---> long ---> float ---> double 1 2 2 4 8 4 8 -->octets
byte short char 之间不会相互提升,boolean不会转化为其他数据类型.
byte 范围:-128 ~ 127
byte short char 在参加运算时,会自动转化为 int,再运算。
如:byte b1 = 1; byte b2 = 2; byte b3 = b1 + b2 ;报错 //byte b3 = (byte)b1+b2; 联想到 short char 也是如此
<2> 数据声明
整型量会默认为 int 类型,所以 long 类型后面要加 l 或者 L
long a = 20L; long a = 20l;
再如:long l = 2000000000;//不加L或者l就会报错(过大的整数)
因为编译器看到整型数就视为int但是int只有四个字节装不下2000000000就报错! 浮点数会默认为 double 类型,所以float类型后面要加 f 或者 F
float f = 2.3F; float f = 2.3f; 建议:声明 long 或者 float 数据类型时写上F 或者 L,不要使用小写的 f 或者 l。
猜猜下面程序打印结果?
public class OnLongDemo { // 年的微秒数 private static final long MICROS_PER_YEAR = 365 * 24 * 60 * 60 * 1000 * 1000; // 年的毫秒数 private static final long MILLIS_PER_YEAR = 365 * 24 * 60 * 60 * 1000; public static void main(String[] args) { System.out.println(MICROS_PER_YEAR/MILLIS_PER_YEAR); } }
那么,修改一下代码
public class OnLongDemo { // 年的微秒数 private static final long MICROS_PER_YEAR = 365L * 24 * 60 * 60 * 1000 * 1000; // 年的毫秒数 private static final long MILLIS_PER_YEAR = 365L * 24 * 60 * 60 * 1000; public static void main(String[] args) { System.out.println(MICROS_PER_YEAR/MILLIS_PER_YEAR); } }
再看一个小程序,就可以知道为什么要写大写字母 L, 而不写小写字母l
public class OnLongDemo { public static void main(String[] args) { long x = 1234; long y = 432l; System.out.println("x+y= " + (x+y)); } } 很多人,一看打印结果是 x+y= 5555,但是你错了!!
long y = 432l 后面不是数字 1,而是小写字母 l