java的基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。
需要记住的结论:
- 未带有字符后缀标识的整数默认为int类型;未带有字符后缀标识的浮点数默认为double类型。
- 如果一个整数的值超出了int类型能够表示的范围,则必须增加后缀“L”(不区分大小写,建议用大写,因为小写的L与阿拉伯数字1很容易混淆),表示为long型。
- 带有“F”(不区分大小写)后缀的整数和浮点数都是float类型的;带有“D”(不区分大小写)后缀的整数和浮点数都是double类型的。
- 编译器会在编译期对byte、short、int、long、float、double、char型变量的值进行检查,如果超出了它们的取值范围就会报错。
- int型值可以赋给所有数值类型的变量;long型值可以赋给long、float、double类型的变量;float型值可以赋给float、double类型的变量;double型值只能赋给double类型变量。
运算符对基本类型的影响:
当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则:
- 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
- 否则,只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
- 否则,只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
- 否则,两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。
当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则:
运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,且运算结果与运算符左边数值类型相同。
题目: short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?代码:- public class PrimitiveTypeTest {
- public static void main(String[] args) {
- short s1 = 1;
- // 这一行代码会报编译错误
- // s1 = s1 + 1;
- // 这一行代码没有报错
- s1 = 1 + 1;
- // 这一行代码也没有报错
- s1 += 1;
- }
- }
当使用“==”运算符在基本类型和其包装类对象之间比较时,遵循如下规则:
- 只要两个操作数中有一个是基本类型,就是比较它们的数值是否相等。
- 否则,就是判断这两个对象的内存地址是否相等,即是否是同一个对象。
switch语句使用情况的总结 :
- byte、char、short、int四种基本类型以及它们的包装类(需要Java5.0/1.5以上版本支持)都可以用于switch语句。
- long、float、double、boolean四种基本类型以及它们的包装类(在Java所有版本中)都不能用于switch语句。
- enum类型,即枚举类型可以用于switch语句,但是要在Java5.0(1.5)版本以上才支持。
- 所有类型的对象(包括String类,但在Java5.0/1.5以上版本中,该项要排除byte、char、short、int四种基本类型对应的包装类)都不能用于switch语句。
(文章内容来源:作者:臧圩人(zangweiren)网址:http://zangweiren.javaeye.com )