java se 试题_JavaSE面试题

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

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

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

2 << 3

因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高。

3、请说出byte,short,int,long的取值范围:

byte,内存占8位,所以,结果为:-2^7~2^7-1

short,内存占16位,所以,结果为:-2^15~2^15-1

int,内存占32位,所以,结果为:-2^31~2^31-1

long,内存占64位,所以,结果为:-2^63~2^63-1

注意:首位为符号位

程序中如果涉及小数点计算,推荐使用BigDecimal,避免精度丢失;如果不涉及,应使用BigInteger。

4、写clone()方法时,通常都有一行代码,是什么?

clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。

5、面向对象的特征有哪些方面

封装,抽象,继承,多态

6、abstract class和interface 有什么区别?

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7. 一个类可以实现多个接口,但只能继承一个抽象类。

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

abstract的method不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!

native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。

synchronized与abstract合用的问题,我觉得也不行,synchronized应该是作用在一个具体的方法上才有意义。

8、super.getClass()方法调用

由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在 方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是当前类的类名。

如果想得到父类的名称,应该用如下代码: getClass().getSuperClass().getName();

9、String s = new String("xyz");创建了几个String Object?

一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。

10、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

javac 编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。

第一行代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。

11、关于异常处理:

error 表示恢复不是不可能的一种严重问题。比如说内存溢出。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。例如,数组脚本越界,空指针异常。

普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

java为系统异常和普通异常提供了不同的解决方案:

编译器强制普通异常必须try..catch 处理或用throws 声明继续抛给上层调用方法处理,所以普通异常也称为checked异常;

系统异常可以处理也可以不处理,所以系统异常也称为unchecked异常。

12、说出一些常用的类,包,接口,请各举5个

常用类:String、Long、Date、HashMap、ArrayList

常用包:java.lang、java.io、java.util、org.hibernate、java.sql

常用接口:List、Map、Runnable、Servelt、HttpServeltRequest

13、能不能自己写个类,也叫java.lang.String?

可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载jre.jar 包中的那个java.lang.String。

由于在tomcat的web应用程序中,都是由webapp自己的类加载器先自己加载WEB-INF/classess目录中的类,然后才委托上级的类加载器加载,如果我们在tomcat 的web应用程序中写一个java.lang.String,这时候Servlet程序加载的就是我们自己写的java.lang.String。

但是这么干就会出很多潜在的问题,原来所有用了java.lang.String 类的都将出现问题。

另外,java 提供了endorsed技术,但是,能够被覆盖的类是有限制范围,反正不包括java.lang 这样的包中的类。

版权声明:本文为CSDN博主「maxiaoxian123」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值