java有哪些数据类型?
定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间
引用数据类型包括以下几种:
类类型(Class Type) | 类类型是指由类定义的数据类型,包括自定义类和Java API中的类 |
---|---|
接口类型(Interface Type) | 接口类型是指由接口定义的数据类型,接口定义了一组方法的签名,而不包含方法的实现 |
数组类型(Array Type) | 数组类型是指由相同数据类型的元素组成的有序集合,可以通过下标来访问每个元素 |
枚举类型(Enumeration Type) | 枚举类型是指由一组具名常量组成的数据类型,每个常量都有一个唯一的名称和一个预定义的值 |
注解类型(Annotation Type) | 注解类型是指由注解定义的数据类型,注解用于为程序元素添加元数据 |
switch 是否能作用在 byte 上?是否能作用在 long 上?是否能作用在 String 上?
switch语句可以作用在byte、short、char、int、枚举类型和String类型上,但不能作用在long类型上。
- byte、short、char、int和枚举类型:这些类型可以作为switch语句的表达式类型,因为它们的取值范围是有限的,可以作为case语句的常量表达式
- long类型:由于long类型的取值范围较大,无法枚举所有的取值,因此不能作为switch语句的表达式类型
- String类型:从Java SE 7开始,String类型也可以作为switch语句的表达式类型,在使用String类型作为表达式时,case语句后面跟的是字符串常量,而不是整数常量
用最有效率的方法计算 2 乘以 8
计算2乘以8,最有效率的方法是使用位运算,因为位运算比乘法运算和除法运算更快
具体来说,可以使用左移运算符(<<)实现2乘以8的计算,左移运算符将一个二进制数向左移动指定的位数,相当于将这个数乘以2的指定次幂;对于2乘以8,可以将2左移3位,即2 << 3,得到的结果为16
Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
- Math.round(11.5)的返回值是 12
- Math.round(-11.5)的返回值是-11
- Math.round是取大于这个数的最小整数
float f=3.4;是否正确?
不正确!3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化) 会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成 float f =3.4F
short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给short 型;而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换