java面试要点---基础部分CoreJava,基础及语法

4、float型floatf=3.4是否正确?【基础】
答:不正确;精度不准确,应该用强制类型转换,如下所示:floatf=(float)3.4。
   Java中带有小数点的默认的是double型的,不带小数点的默认的是int
5、语句floatf=1.3;编译能否通过?【基础】
答:不能;应该用强制类型转换,如下所示:floatf=(float)1.3;。
---------------------------------------------------
float与double的范围和精度
1. 范围
  float和double的范围是由指数的位数来决定的。
  float的指数位有8位,而double的指数位有11位,分布如下:
  float:
  1bit(符号位) 8bits(指数位) 23bits(尾数位)
  double:
  1bit(符号位) 11bits(指数位) 52bits(尾数位)
  于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。
  其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
  float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308
2.精度
  float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对

精度造成影响。
  float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
  double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

6、short s1=1;s1=s1+1;有什么错?
Short s1=1;s1+=1;有什么错?【基础】
答:short s1=1; s1=s1+1; s1+1运算结果是int型,需要强制转换类型;
Short s1=1;s1+=1;可以正确编译,自动类型提升。
7、Java有没有goto?【基础】
答:goto是java中的保留字,现在没有在java中使用。
------------------------------------------------------
10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别?【基础】
答:区别主要有两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作
布尔型,而且可以操作数值型b.逻辑操作不会产生短路。
----------------------------------------------------------
11、heap和stack有什么区别?【基础】
答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进
先出的方式进行处理;堆是栈的一个组成元素。
---------------------------------------------------
12、Math.round(11.5)等于多少?Math.round(-11.5)等于多少?【基础】
答:Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数
最接近的长整数,参数加1/2后求其floor。
---------------------------------------------
3、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String
上?【基础】
答:switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case
语句的参数应该是int、short、char或者byte。long,string都不能作用
于swtich。
14、编程题:用最有效率的方法算出2乘以8等於几?【基础】
答:2<<3
-------------------------------------------------------------
15、有没有length()这个方法?String有没有length()这个方法?【基础】
答:数组没有length()这个方法,有length的属性。String有length()这个
方法
------------------------------------------------------------------------
16、在JAVA中,如何跳出当前的多重嵌套循环?【基础】
答:在最外层循环前加label标识,然后用break:label方法即可跳出多重循环。
-------------------------------------------------------------------------------
17、构造器Constructor是否可被override?【基础】
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重
载Overloading。
18、两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这
句话对不对?【基础】
答:不对,有相同的hashcode。
----------------------------------------
19、是否可以继承String类?【基础】
答:String类是final类,故不可以继承。
------------------------------------------
21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,
并可返回变化后的结果,那么这里到底是值传递还是引用传递?【基础】
答:是值传递。Java编程语言只有值传递参数。当一个对象实例作为一个参数
被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的
方法中改变,但对象的引用是永远不会改变的。
---------------------------------------------------
22、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1
等,如何输出一个某种编码的字符串?【基础】
答:publicStringtranslate(Stringstr){
第4页
StringtempStr="";
try{
tempStr=newString(str.getBytes("ISO-8859-1"),"GBK");
tempStr=tempStr.trim();
}catch(Exceptione){
System.err.println(e.getMessage());
}
Return tempStr;
}
-------------------------------------------------------------
StringBuilder是从JDK5开始,为StringBuffer该类补充了一个单个线
程使用的等价类;通常应该优先使用StringBuilder类,因为它支持所有相同
的操作,但由于它不执行同步,所以速度更快。
---------------------------------------------------------------------

你可能感兴趣的:(各种面试要点)