数据类型的分类
- JAVA是一门强类型语言或静态语言。也就是说,所有的变量都必须显式声明类型。
- Groovy,JavaScript:弱类型语言,动态语言。
- Java的数据类型分为两大类型:原始类型(primitive type,也成为简单类型)和引用类型(reference type)。
- 原始类型指的是一个数、一个字符或者一个true/false值。它不提供任何与他们所持有的数据类型相关的行为(方法)。
- JAVA有8种原始类型。
- Java浮点类型常量有两种表示形式
--科学计数法形式,例如:3.14e2=314
--科学计数法仅能用在浮点类型,例如51200是整型,而512E2则是浮点类型。
- Java在编译器中浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:
- 只有浮点数除以0才可以得到正无穷大(Infinity)或负无穷大(-Infinity),因为java语言会自动把和浮点数运算的0(整数)当成0.0(浮点数)处理。如果一个整数值除以0,则会抛出一个异常(java.lang.ArithmeticException)。可做实例自己测试一下。
类型转换-自动类型转换
- 通常,我们需要在不同的数据类型之间进行转换。
- 自动类型转换(隐式类型转换)把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时产生。
- 简单类型除了boolean类型之外,其他的数据类型可以自动转换成其他的数据类型,只要遵循如下图所示的原则:
类型转换-强制类型转换
- 如果把上边的转换图中的箭头游标的类型转换为左边的类型,则必须使用强制类型转换
- 强制类型转换(显式类型转换):(targetType) value;
自动提升
- 当一个算数表达式中包含多个基本类型的值时,整个算数表达式的数据类型将发生自动提升,规则如下:
- 1.所有byte型、short型、char型将被自动提升到int类型。
- 2.整个算数表达式的数据类型自动提升到与表达式最高等级操作数同样的类型,操作数的等级排列如类型转化图,位于箭头右边的等级要高于左边。
- 如果一个操作数是long型,计算结果就是long型;
- float和double同上;
- 表达式的类型需要严格保持和表达式中最高等级操作数相同的类型,如,即使无法除尽也遵循该原理
int intResult=23/val;//右边表达式最高是int类型,因此不能除尽也是int类型,是截取而不是四舍五入。
- 如果是字符串类型,则是连接符还是加法要看具体情况。
- 例:
System.out.println(" "+'a'*1 );//97
System.out.println('a'+1+"");//98