基础语法
- 7. Java 有哪些数据类型
- 8.自动类型转换、强制类型转换?
- 9.什么是自动拆箱/封箱?
- 10.&和&&有什么区别?
- 11.switch 是否能作用在 byte/long/String上?
- 12.break ,continue ,return 的区别及作用?
- 13.用最有效率的方法计算2乘以8?
- 14.说说自增自减运算?看下这几个代码运行结果?
续之前问题
7. Java 有哪些数据类型
Java 语言数据类型分为两种: 基础数据类型和引用数据类型
基本数据类型:
- 数值型
- 整数类型 (byte、short、int、long)
- 浮点类型 (float、double)
- 字符型(char)
- 布尔型(boolean)
引用数据类型:
- 类(class)
- 接口(interface)
- 数组([])
8.自动类型转换、强制类型转换?
Java 所有的数值变量可以相互转换, 当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,可以进行自动类型转换; 反之, 需要强制转换
代码判错
float f=3.4 ,对吗?
不正确。3.4 是单精度数,将双精度类型(double)赋值给浮点型(float)属于向下转型会造成精度损失,因此需要强制类型转换 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);其中有隐含的强制类型转换。
9.什么是自动拆箱/封箱?
- 装箱: 将基本类型用它们对应的引用类型包装起来;
- 拆箱: 将包装类型转换为基本数据类型;
Integer num = 10; // 自动封箱,将整数10赋值给Integer对象
int value = num; // 自动拆箱,将Integer对象的值转换为int类型
Java可以自动对基本数据类型和它们的包装类进行装箱和拆箱。
自动拆箱和自动装箱使得基本数据类型和包装类之间的转换更加方便, 提高了代码的简洁性和可读性. 它们是 Java 语言中的语法糖, 由编译器在编译时进行相应的转换.
10.&和&&有什么区别?
& 运算符有两种用法: 短路与、逻辑与。
&& 运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求左右两端的布尔值都是 true 整个表达式的值才是 true。
&& 之所以称为短路与算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用 && 而不是 &。
例如在烟灶用户登录时判定用户名而不是 null 而且不是空字符串,应当写为 username !=null && !username.equals(“”), 二者的顺序不能交换, 更不能 & 运算, 因为 第一个条件如果不成立, 根本不能进行字符串的 equals 比较, 因为 NullPointerException 异常
11.switch 是否能作用在 byte/long/String上?
Java5 以前 switch(expr)中,expr 只能是 byte、short、char、int。
从 Java 5 开始,Java 中引入了枚举类型, expr 也可以是 enum 类型。
从 Java 7 开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
12.break ,continue ,return 的区别及作用?
- break 跳出整个循环,不再执行循环(结束当前的循环体)
- continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
- return 程序返回,不再执行下面的代码(结束当前的方法 直接返回)
13.用最有效率的方法计算2乘以8?
2 << 3。位运算,数字的二进制位左移三位相当于乘以2的三次方。
14.说说自增自减运算?看下这几个代码运行结果?
在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(--)。
++和--运算符可以放在变量之前,也可以放在变量之后。
当运算符放在变量之前时(前缀),先自增/减,再赋值;当运算符放在变量之后时(后缀),先赋值,再自增/减。
例如,当 b = ++a 时,先自增(自己增加 1),再赋值(赋值给 b);当 b = a++时,先赋值(赋值给 b),再自增(自己增加 1)。也就是,++a 输出的是 a+1 的值,a++输出的是 a 值。