-
Java是跨平台的吗?Jvm是跨平台的吗?
答:
Java程序是借助Jvm来完成跨平台的,需要Jre提供运行环境
Jvm不是跨平台的,如果Jvm跨平台,只需要一个Jvm即可,但是针对不同的操作系统,必须提供对应平台版本的Jvm. -
哪句是编译失败的?为什么?
byte b1 = 3 , b2 = 4 , b ;
b = b1 + b2 ;
b = 3 + 4 ;
答:
第二句编译失败,因为变量b1+b2 时数据类型由byte型提升成 int 型,而变量b 是byte类型,接收不了int型数值,会丢失精度 -
byte b = 130;有没有问题?如果想让赋值正确,可以怎么做?结果是多少?
有问题,130超出了byte的取值范围(-128~127)
想让赋值正确要进行变量的强制类型转换
byte b = (byte)130;结果为-126
正数的原、反、补码都相同,即二进制数
130的二进制为10000010,再由补码推原码,先减00000001,在取反为11111110
最高位(符号位)是1,不参与运算,算出结果为-126 -
下面两个代码有没有问题,如果有,哪里有问题?
A:short s = 1;s = s+1;
B:short s = 1;s += 1;
答:
A有问题,数据类型不兼容,丢失精度
存在默认类型提升,short类型在参与运算时默认提升为int类型
s+1的结果是int类型,使用short类型变量接收int类型的值是不可以的!
如何解决:只能强制类型转换>>>s = (short) (s+1);
B没有问题,对于扩展运算符 " += “,” -= “,” *= “,” /= “,” %= ",隐藏了强制类型转换 -
逻辑双与&&和逻辑单与&的区别?逻辑双或||和逻辑单或|的区别?
答:
&&和&都符合:有false,则false
逻辑双与&&:如果&&符号的左边表达式为false,右边就不执行了(短路效果)
||和|都符合:有true,则true
逻辑双或||:如果||符号的左边表达式为true,右边就不执行了 -
有效的方式写出2乘以8的结果
答:
2<<3 = 2*2^3 = 16 -
将两个数据的值进行互换
(考查位运算符中位异或特点)
答:
int a,b;
//方式一:使用中间变量
int temp = a ;
a = b ;
b = temp ;
//方式二,位异或的特点
a = a ^ b ;
b = a ^ b ;
a = a ^ b ;
//方式3,变量相加或相减
a = a + b ;
b = a - b ;
a = a - b ;
//一步走
b = (a + b) - (a = b) ;
System.out.print(“a=”+a);
System.out.print(“b=”+b); -
switch中的表达式可以是byte类型吗?
答: 是,表达式一般接收具体的变量,类型一般情况:byte,short,int,char
switch中的表达式可以是String类型吗?
答: 如果是jdk1.7以后可以跟String
switch中的表达式可以是枚举类型吗?
答: 如果是jdk1.5以后可以是枚举 -
数组中有没有length()?
答: 没有,只有length属性
String类中有没有length()?
答: String有length(),获取字符串长度
集合中有没有length()?
答: 没有,获取集合长度size() -
静态代码块、构造代码块、构造方法的执行顺序?
答: 静态代码块>>>构造代码块>>>构造方法 -
final的应用?
答:
可以修饰类,被修饰的类无法被继承
可以修饰变量,此时这个变量是常量,被修饰的变量只能赋值一次
可以修饰成员方法,此刻该方法不能被重写
Java面试题整理
最新推荐文章于 2023-03-29 11:28:15 发布