1. 当前位置:网站首页 > 编程语言

Java SE 部分笔试、面试题


28、ABCD中的哪个选项替换掉//here处的代码,输出的结果不为0?

public class Inc {

public static void main(String[] args){

int i = 0;

//here

}

}

A、System.out.println(i--);

B、System.out.println(i+'0');

C、System.out.println(i++);

D、System.out.println(i);



答:此题主要考察的是后置++操作符,后置++操作符的特点是先使用变量的值然后再将变量值增1,ACD选项输出结果都为0,所以本题答案为B。B选项输出结果为48。



27、运行下列代码,指出结果是多少?

public class Inc {

public static void main(String[] args){

Inc inc = new Inc();

int i = 0;

inc.permin(i);

i = i++;

System.out.println(i);

}

void permin(int i){

i++;

}

}


答:输出0 此题要注意两点:一是permin(int i)方法不会修改传入的变量值,如果你还不明白,需要参考值传递和引用传递的相关材料。二是注意i = i++;一行代码,它与i++有很大的差别,i=i++;根本不会时i的值增1。所以此题答案为:输出0。



26、空字符串("")和null的区别?

答:空字符串是String类的一个对象,而null是指一个引用变量没有引用对象,在值为null的引用变量上调用方法或变量,将会导致NullPointerException。通过以下代码来验证变量x是否为null,x == null,通过"".equals(x)来验证x是否为空字符串。



25、静态变量和实例变量的区别?

答:静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。

实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。




24、当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对?

答:对。但是在Java中建议,当x.equals(y)等于true时,x.hashCode()与y.hashCode()也相等。



23、列举几个常见的RuntimeException的子类?

答:ArithmeticException、NullPointerException、IndexOutOfBoundsException、ClassCastException、ArrayStoreException



22、Java有没有goto?

答:Java没有使用goto关键字,但它是Java的保留字。



21、在Java中char类型的变量占用几个字节?
char类型的变量能不能存储一个中文汉字?

答:
在Java中char类型的变量占用2个字节,char类型变量采用Unicode编码。可以存储一个汉字,但不是所有的汉字都能存储,你想想,汉字至少10万个,而Unicode占用两个字节,最多能存储6万多个。



20、有如下代码:

try {

代码1

return 1;

}finally{

代码2

return 2;

}


问,代码2是否会被执行?若会被执行,是try里的return语句先执行还是finally里的代码先执行?最后该代码片段的返回值是1还是2?

答:代码2会被执行,因为finally里的代码总会被执行。

finally里的代码会在return 1;之后被执行。

既然
finally里的代码会在return 1;之后被执行,所以return 2;覆盖return 1;返回2。



19、
有如下方法的定义:

public static int getNumber(int a){

int b = 0;

try {

b = 10/a;

return b;

} catch (Exception ex) {

b = 100;

return b;

}finally{

b = 1000;

return b;

}

}


在main方法中调用以上方法,如下:

System.out.println(getNumber(10));

System.out.println(getNumber(0));

结果是多少?


答:1000 和 1000 。



18、有如下方法的定义:

public static int getNumber(int a){

int b = 0;

try {

b = 10/a;

return b;

} catch (Exception ex) {

b = 100;

return b;

}

}


在main方法中调用以上方法,如下:

System.out.println(getNumber(10));

System.out.println(getNumber(0));

结果是多少?

答:1 和 100 。



17、用最有效率的方法算出2乘以8等於几?

答:用位运算,2<<3



16、switch
否作用在byte上,能作用在long上,能作用在String上?

答:能作用在byte上,不能作用在long或String上。



15、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?
Math.round(-11.7)等于多少? Math.round(11.3)等于多少?

答:Math.round(11.3) 等于 11

Math.round(11.5) 等于 12

Math.round(-11.5) 等于 -11

Math.round(-11.7) 等于 -12

速记:距离11.3最近的整数,是11。
距离11.5最近的整数,有两个11和12,取大。距离-11.7最近的整数是-12(别告诉我是-11)。距离-11.5最近的整数,有两个-11和-12,取大-11(也别和我说-12比-11大)。



14、解释一下&和&&的区别?

答:
&和&&都可以作为逻辑运算符,但还是有区别的,&&是短路与。单独运行以下两行代码:

System.out.println(false & (1/0 == 0)); 抛出异常

System.out.println(false && (1/0 == 0)); 打印出false

&作为逻辑运算符时,即使第一个操作符是false,那么它仍然会计算第二个操作符。
&&短路与,如果第一个操作符为false,那么它不会再去计算第二个操作符。另外&还是一个按位与运算符,请看以下代码:

System.out.println(5 & 4); 打印出4,结果怎样计算呢?将它们转换成二进制数据,一目了然。

00000101 & 00000100 = 00000100




13、解释一下int和Integer有什么区别?

答:int是原始数据类型,而Integer是引用数据类型,是int的包装类。Java中的八种原始数据类型都有对应的包装类,boolean--Boolean char--Character byte--Byte short--Short long--Long float--Float double--Double。int和Integer是可以相互转换的如:

int a = 1; Integer in = new Integer(a);

Integer in = new Integer(10); int i = in.intValue();

JDK5.0支持自动包装和自动解包,以下代码与以上完成相同的功能:

int a = 1; Integer b = a;

Integer c= new Integer(10); int d = c;



12、介绍什么是JDK?什么是JRE?

答:有关JDK的介绍,点此链接参见
Java EE常见面试题第1题。

JRE是Java的运行环境,不包含编译、调试环境。如果你只是运行一个Java程序,那么安装JRE就够用了。



11、一个Java源文件中是否可以定义多个类?接口和类是否可以定义在一个源文件中?

答:一个源文件中可以定义多个类,但只能有一个类是public。接口和类也可以定义在一个源文件中,同样也只能有一个是public。



10、String、StringBuffer、StringBuilder有什么区别?

答:String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都是String类的对象。字符串是常量;它们的值在创建之后不能改变。所以可以共享它们。StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问
StringBuffer对象。StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。



9、short s1 = 1;s1 = s1 + 1;是否有错?short s1 = 1;s1 += 1;是否有错?

答:
short s1 = 1;s1 = s1 + 1;有错误,s1 + 1 是int类型,不能赋值给short类型。short s1 = 1;s1 += 1;正确。



8、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类(非抽象类)?一个类是否可以继承多个类?

答:接口可以继承接口,但是只能继承一个。

抽象类可以实现接口。

抽象类可以继承实体类。

一个类不可以继承多个类,Java只允许单一继承,可以实现多个接口。




7、一个类的构造方法是否可以被重载(overloading),是否可以被子类重写(overriding)?

答:构造方法可以被重载,但是构造方法不能被重写,子类也不能继承到父类的构造方法。



6、如何防止一个类被其它类继承?

答:定义一个类时将该类声明为final class。

或者将此类的所有构造方位声明为private。




5、如何获得静态数组的长度?如何获得字符串的长度?

答:使用数组变量的length属性。使用字符串变量的length()方法。



4、谈一谈final关键字的作用?

答:final class 表示此类不允许有子类。

final virable 表示一个常量。

final method 表示一个方法不能被重写。



3、String类是否可以被继承?

答:String 类是final类,不可以被继承。



2、Java语言中有哪些基本数据类型,String是不是基本数据类型?

答:有八种基本数据类型(有的资料也称为原始数据类型),分别是byte short int long float double boolean char。String不是基本数据类型,是引用数据类型。



1、面向对象编程的三个基本特性是什么?

答:封装、继承和多态。


本文最后更新于2012-10-24,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:https://blog.gengchao.cn/post-123.html
未标注转载均为本站远程,转载请注明文章出处:

发表评论

联系我们

在线咨询:点击这里给我发消息

微信号:cngengchao

工作日:9:00-23:00,节假日休息

扫码关注