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异常。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
- 这篇文章主要介绍了Java程序员面试经常问到的30道基础题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-12-17
- 这篇文章主要介绍了我掏空了各大搜索引擎,给你整理了154道Java面试题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-12-12
- 这篇文章主要介绍了华为java社招面试题目、参考答案及全部流程,讲述了参加华为java社招面试的全部流程、遇到的面试题目、参考答案以及相关的注意事项,需要的朋友可以参考下2019-10-22
- 这篇文章主要介绍了百度java后台实习生招聘面试题,整理总结了百度java后台招聘过程中一面、二面与三面所遇到的各种问题,涉及Java相关概念、原理及算法等,需要的朋友可以参2019-09-27
- 这篇文章主要介绍了Java多线程与并发面试题(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-09-26
9月最新184道阿里、百度、腾讯、头条Java面试题合集(小结)
这篇文章主要介绍了9月最新184道阿里、百度、腾讯、头条Java面试题合集,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-09-09- 这篇文章主要介绍了字节跳动java研发面试题整理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-08-29
- 这篇文章主要介绍了银行java开发笔试面试题13道,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-08-27
- 这篇文章主要介绍了15个Java线程并发面试题和答案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-08-27
- 这篇文章主要介绍了10个最难回答的Java面试题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-08-07
最新评论