您的位置:首页 > 职场人生

java面试系列题目1------转述

2013-07-03 01:08 316 查看
switch中的值可以使byte? 可以是long?或者可以是String吗?

1.在stitch(express)中定义的是:express可以是一个整数表达式或者是枚举常量,整数表达式可以使int基本型也可是其Integer类型,byte,char,short可以隐式的转化为int,所以这些类型以及这类型的包装型是可以放在express中的。显然long与String都不符合其语法定义,并且不能隐式的转化为int型。所以不能把long与String放在express中

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

在java编译器执行的的时候s1+1会转换为与1同类型的表达式,因为s1是short型s1=s1+1在赋值时会出现强制转换异常;然而+=运算符是java内部比较特殊的运算符,java编译器会进行特殊的处理,所以能正确变异。

3.char型变量中能不能存贮一个中文汉字?为什么?

能,因为char是用来存储Unicode编码的,而unicode存储了汉字编码集,所以char能用阿里存储汉字;当然如果unicode中没有存放 某个特殊的汉字编码,那么char中当然也不能存储这个特殊的汉字。另外要注意的是一个汉字占用两个字节的unicode,所以一个汉字是两个字节。

4.用最有效率的算法算出4x4?

这个可以这样考虑,可以转换为2x8,然后2的n次方相当于是左移n位,所以说2<<3左移三位即可,为什么这样最有效率?因为cpu可以直接支持位运算,而其他要经过解释符号的作用。

5.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
引用不能变

举个例子如下

final StringBuffer a=new StringBuffer("abcdefg");

在对 a进行一次引用 a=new StringBuffer("adf");这样会出现变异异常;

也能用对象是可以变的如:a.append("dada");他的内容改变了,也就说引用的对象改变了。

6.静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest

{

public static int staticVar = 0;

public int instanceVar = 0;

public VariantTest()

{

staticVar++;

instanceVar++;

System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);

}}

7.是否可以从一个static方法内部发出对非static方法的调用?

在类还没进行实例化时不可以。一个非static方法在调用时必须关联到一个实例上,static方法调用时只要程序加载了类的字节码就可以直接用了,不用创建实例。所以static方法在调用时不知道非static关联到哪个类上,逻辑上明显有误,所以不可以。

而当创建了实例后那就另当别论了。

8.Integer与int的区别

int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

9.Math.round、Math.ceil与Math.floor的用法?

1.ceil是天花板的意思,就是向上取整如Math.cei(12.3)=13
Math.cei(-12.3)=12

2.floor是地板的意思,就是向下取整Math.floor(12.3)=12 Math.floor(-12.3)=-13
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: