java基础面试题

mac2026-04-08  5

java基础面试题

面试题:

(1)

byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么呢? b = b1 + b2;是有问题的。 因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。 b=b1+b2 //这个类型提升为了int类型,所以有问题。 b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。

(2)

下面两种方式有区别吗? float f1 = 12.345f; float f2 = (float)12.345; 有区别,float f1=12.345f定义一个float类型的变量, float f2 = (float)12.345是把double类型的12.345强制转换为float类型 的变量。

(3)short s=1;s = s+1;short s=1;s+=1; 上面两个代码有没有问题,如果有,那里有问题。

class OperatorTest { public static void main(String[] args) { //short s = 1; //s = s + 1;// //short类型参与运算 首先会转化成int类型 int类型再赋给short类型 会损失精度 //System.out.println(s); short s = 1; s += 1; //好像是 s = s + 1; System.out.println(s); } } s += 1;不是等价于 s = s + 1; 而是等价于 s = (s的数据类型)(s + 1);

(4)请自己实现两个整数变量的交换

.

public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //方式1:使用第三方变量(开发中用的) /* int c = a; a = b; b = c; System.out.println("a:"+a+",b:"+b); System.out.println("------------"); */ //方式2:用位异或实现(面试用) //左边:a,b,a //右边:a ^ b /* a = a ^ b; b = a ^ b; //a ^ b ^ b = a a = a ^ b; //a ^ b ^ a = b System.out.println("a:"+a+",b:"+b); */ //方式3:用变量相加的做法 /* a = a + b; //a=30 b = a - b; //b=10 a = a - b; //a=20 System.out.println("a:"+a+",b:"+b); */ //方式4:一句话搞定 b = (a+b) - (a=b); //b=30-20=10,a=20 System.out.println("a:"+a+",b:"+b); }

(5)Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

可以。因为java语言中的字符占用两个字节。char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字.所以,char型变量中当然可以存储汉字啦

unicode编码问题 link

(6)当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

link

(7)Integer.parseInt(s)和Integer.valueOf(s)之间的区别

link

(8)Math.random()和Random类的区别

link

最新回复(0)