数据类型
- 数据类型可以分为基本数据类型和引用数据类型两种
- byte 占用1字节
- short 占用2字节
- char 占用2字节
- int 占用4字节
- long 占用8字节
- float 占用4字节
- double 占用8字节
自动类型提升
byte short char 在参与运算时 会自动提升为int 类型
例如:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
第二句就会编译出错,出现“不兼容的类型: 从int转换到byte可能会有损失”,此处是因为b1,b2,b都定义为了byte类型,但是byte在参与运算时会自动提升为int类型进行运算,所以定义b应该单独进行定义为int型。
第三句不会出现编译错误,是因为常量优化机制,如果是两个常量在运算,他会判断这个结果是否存在于这个数据类型的范围内,如果超过,则出现错误,反之,编译成功。long float double 参与运算时会提升为 long float double类型
- boolean不参与运算,只有true和false
“+”的两种作用
- 运算
连接
例如:System.out.println(1+6);//7
System.out.println("1"+'1');//“11”,有双引号中的字符串出现时,字符串左右不需要考虑ASCII码,但是运算需要从左到右顺序运算。
System.out.println('1'+'2');//99,单个字符相加需要查找单个字符的ASCII码
System.out.println(1+"2");//"12"连接左右
System.out.println("1"+"2");//"12"
System.out.println(1+3+"2"+3);//"42"+3="423",1和2进行运算,然后和2连接。
}此处注意“”中是字符串,‘’中是单个字符,是双引号和单引号间的区别。
如果出现
System.out.println('1'+'2'+"3"+4);
这样的运算,‘1’+‘2’运用ASCII码得99,99和字符串“3”连接得993,再和4连接得9934。