java运算符面试题_Java基本类型和运算符(面试题)

1.Java中的基本类型有哪些?String 是最基本的数据类型吗?

基本数据类型:byte,short,char,int,long,float,double,boolean 一共8种。String不是基本数据类型,属于引用类型。

2.char型变量中能不能存储一个中文汉字,为什么?

java的char类型可以用来存储Unicode编码字符,而Unicode编码包含了中文,所以char类型可以用来存储一个中文汉字,但是某些特殊的生僻汉字可能没有包含在Unicode编码字符集中,这种情况下就不能用来存储一个汉字了。

3.short s1=1; s1=s1+1;有什么错?short s1=1;s1+=1; 有什么错?

1.对于s1定义是short类型,但是在进行s1+1运算时类型自动提升为了int类型,所以在将int赋值给short类型的s1时,就会发生类型转换错误,2. 由于+=是符合java标准的运算符,java编辑器在进行运算时会进行特殊处理,所以可以正确执行。

4.Java中的Integer和int有什么区别?

int 是Java的内置基本数据类型之一,Java为每一个基本数据类型都提供了封装类型(包装类型),Integer就是int的封装类,int的默认值为0,Integer的默认值为null,所以Integer可以区分出来赋值未赋值与0的区别。

5.能否在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量?

不行,我们不能在没有强制类型转换的前提下将一个 double 值赋值给 long 类型的变量,因为 double 类型的范围比 long 类型更广,所以必须要进行强制转换。(只能小转大,大转小要强转)

6.java 中 3*0.1 == 0.3 将会返回什么?true 还是 false?

false,因为浮点数不能完全精确的表示出来,一般都会损失精度。

7.java 中 float f = 3.4; 是否正确?

不正确,3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型(down-casting,也称为窄化)会造成精度损失,需要强制类型转换 float f = (float)3.4; 或者写成 float f = 3.4F才可以

8.下面Integer类型的数值比较输出的结果为?

public static void main(String[] args) {

Integer n1 =100,n2 =100,n3 =150,n4 =150;

System.out.println(n1 == n2);

System.out.println(n3 == n4);

}

第一个是true,第二个是false,原因是-128~127之间不会new新的对象,参见源码:

private static class IntegerCache {

static final int low = -128;

static final int high;

static final Integer cache[];

static {

// high value may be configured by property

int h = 127;

String integerCacheHighPropValue =

sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");

if (integerCacheHighPropValue != null) {

try {

int i = parseInt(integerCacheHighPropValue);

i = Math.max(i, 127);

// Maximum array size is Integer.MAX_VALUE

h = Math.min(i, Integer.MAX_VALUE - (-low) -1);

} catch( NumberFormatException nfe) {

// If the property cannot be parsed into an int, ignore it.

}

}

high = h;

cache = new Integer[(high - low) + 1];

int j = low;

for(int k = 0; k < cache.length; k++)

cache[k] = new Integer(j++);

// range [-128, 127] must be interned (JLS7 5.1.7)

assert IntegerCache.high >= 127;

}

private IntegerCache() {}

}

9.Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

10.用最有效率的方法计算2乘以8?

2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)

11.&和&&的区别?

&按位与;&&逻辑与。&&运算符进行短路与运算。&和&&二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:password != null &&!password.equals(“”),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值