JAVASE笔试面试题汇总
1. STRING是最基本的数据类型吗?
答:基本数据类型包括byte、int、char、long、float、double、boolean和short。
String不属于基本数据,它是对象,默认值为null,String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类。
2. 静态变量和实例变量的区别?
静态变量也称作类变量,由static修饰,如:static int s; s就是静态变量,它只能通过类来访问。
实例变量没有static修饰符,它只能通过实例对象来访问。
同一类的不同的实例对象有自己的实例变量,但是它们共享同一个静态变量。当一个实例对象修改了它的实例变量时,不会影响其他的实例对象。如果一个实例对象修改了静态变量,则会影响其他的对象实例。
在java中类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
3. 是否可以从一个static方法内部发出对非static方法的调用?
答:不可以,如果静态方法内部包含对象的非静态方法的调用则不能保证对象初始化,所以不能在静态的方法里调用非静态的方法。
4. 描述一下JVM加载class文件的原理机制?
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。
5. &和&&的区别?
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
6. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是int、 short、 char 或者 byte。long,string 都不能作用于swtich。
7. Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round方法返回与参数最接近的长整数,参数加1/2后求其floor.
8. 怎样用最有效率的方法算出2乘以几等於16?
2 << 3
9. 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路
10. String s = new String("xyz");创建了几个String Object?
两个
String 里面又是一个字符串。
11. 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;(可以正确编译)
12. 写clone()方法时,通常都有一行代码,是什么?
Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。
13. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。必须只有一个类名与文件名相同。Public的类必须和文件名相同,并且一个.java的源文件中只能有一个公有的类。
14. 在JAVA中,如何跳出当前的多重嵌套循环?
用break; return 方法。
15. int 和 Integer 有什么区别?
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类如:boolean Boolean,char Character,byte Byte,short Short,int Integer,long Long,float Float double Double。引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
16. char型变量中能不能存贮一个中文汉字?为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的,一个汉字两个字节。
17. 数组有没有length()这个方法? String有没有length()这个方法?
数组有length属性,没有length方法。String有length()方法。
18. String 和StringBuffer,StringBuilder的区别?
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。stringBuffer是线程安全的,stringBuilder是单线程使用的。相对效率高些。
19. 是否可以继承String类?
String类是final类故不可以继承。