基本数据类型
JAVA中一共有四类八种基本数据类型,分别是
整型(byte,short,int,long)
浮点型(float,double)
文本型(char)这里我们一般用的最多的还是字符串string(注意string不是基本数据类型,而是引用类型,默认值为null,不过也有包装类String,jvm使用字符串池来存储所有的字符串对象)
布尔型(boolean)一般值为true/false
在通常情况下,如果JAVA中出现了一个整型数字不如35,那么这个数字就是int类型的,如果我们希望他是byte类型的,可以在数据最后加上大写的B:35B,表示他是byte类型的.桐乡的35S表示的是short类型的,35L表示long类型的,表示int我们可以什么都不用加,但是如果表示long类型的,就一定要在数据最后加上"L".
double类型比float类型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double类型的,如果要表示一个数据是float类型的,就要在数据的最后面加上"F"
浮点型的数据是不能完全精确的,所以有时会损失精度,在小数点最后几位出现偏差,是正常的.
自动类型转换
1.两种类型是彼此兼容的.
2.转换后的目标类型占的空间范围一定要大于被转换的远类型
由低字节向高字节自动转换(黑线表示无数据丢失的自动数据转换,红线表示转换中可能发生精度丢失) int转float可能会发生精度丢失,转double不会丢失.(这个就要牵扯到进制转换的问题上去了)
强制数据转换
将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在进度损失的风险,编译器要求程序员进行强制类型转换.强制转换过程中可能会发生数据溢出,必须警惕.
int a=(int)3.14;
数据类型自动提升
如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
如果其中一个操作数是float类型,另一个将会转换为float类型。
如果其中一个操作数是long类型,另一个会转换为long类型。
补充一点
Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包类的实例对象.额... 从jdk1.5开始,jvm可以完成基本类型和它们对应包装类之间的自动转换.因此我们在赋值,参数传递以及数学运算的时候像使用基本类型一样使用他们的包装类,但是这并不意味着可以通过基本类型条用他们的包装类才具有的方法.因为所有基本类型的包装类都使用了final修饰,这样就无法继承他们扩展新的类,也无法重写他们的任何方法.
基本类型的优势:数据存储相对简单,运算效率比较高
包装类的优势:集合的元素必须是对象类型,包装类满足了java一切皆是对象的思想.