《2022年Java基础面试题 .pdf》由会员分享,可在线阅读,更多相关《2022年Java基础面试题 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一部分 Java 的类1. 请解释 Java 语言的跨平台特性。解析:虽然不知道什么是跨平台也可以使用Java 语言进行编程,但是对于一个Java 编程员来说,理解跨平台特性能够更深入掌握Java 语言,所以企业中往往要求应聘者至少理解这个特性。参考答案: Java 的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。他的意思就是如果用Java 语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于Java 虚拟机( JVM ) ,JVM解释器在运行Java 应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所
2、以可以实现同样的应用在不同平台上都能运行。2. 请列举 JAVA语言的主要特点解析:了解一门语言,往往从熟悉该语言的主要特点开始入手,所以企业也常常通过应聘者对 JAVA语言特点的掌握程度而判断其语言基础是否扎实。参考答案: JAVA语言有很多特点,主要包括跨平台性:一个应用可以不经过修改直接运行到不同的平台上。面向对象:JAVA 语言是一门面向对面的语言,可以使用对象的属性和行为,可以使用面向对象的思想进行分析设计,并实现整个应用。解释执行JAVA应用时, JVM中的解释器将解释类文件,生成符合当前平台的字节码。自动回收: JAVA应用中的垃圾回收是自动进行的,JVM中的后台线程将监视内存中
3、数据的使用,当内存中的数据不再被引用时,将被作为垃圾回收,而不需要程序员动手回收。3. 请说明一个 JAVA类中主要包含哪几个元素?并说明每种元素的作用。解析:无论简单还是复杂的JAVA应用,都是由若干个类组成,所以类是JAVA应用的组成单位。 了解一个类中包含的主要元素能够对类有一个清晰的认识。一个类中往往会有五种元素,即属性、方法、构造方法、块以及内部类、其实块和内部类比较少见。参考答案: JAVA 类中主要包含属性、方法、构造方法、块以及内部类。属性用来定义对象的数据; 方法用来定义对象的行为;构造方法可以用来创建对象;块能够用来在类加载时执行操作或者在每次实例化前执行通用操作;内部类作
4、为类的一个成员存在,能够访问外部类的属性和方法。4、请说明构造方法的作用和特征解析:类是对象的模板,使用类往往都需要首先对类进行实例化,即创建对象。要创建对象必须使用new关键字调用构造方法(constructor)才能完成,构造方法中往往对属性进行实例化,也可以实现其他必要的功能,如读取属性文件等。构造方法有独特的特征:名字必须与类名相同且大小写敏感,而且构造方法不能声明返回值,这两个特征缺一不可。使用 Eclipse工具时,可以使用菜单Generate Constructor自动生成不同的构造方法。参考答案:构造方法的作用是用来创建对象,使用new关键字调用。构造方法的名字必须与类的名字相
5、同,并且大小写敏感,同时构造方法不能声明返回值类型,可以使用任意一种访问修饰符, 但是不能使用其他修饰符进行修饰,如static、final、abstract等修饰符都可以修饰构造方法。5、什么事方法重载( overload )?解析:如果一个类的某个行为,会有不同的算法和逻辑,例如,Math 类的计算绝对值的方法,既可以计算int类型数值的绝对值,也可以计算double 类型数值的绝对值。这种情况下, 每种类型都定义一个不同的方法名,如 abInt 、absDouble ,那么类的可读性就较差,使用时,必须熟悉处理每种类型参数所对应的方法名。然而,如果使用同一个方法名,而使用不同的形式参数来
6、区别这些方法,那么就具有很好的可读性,如 abs (int i) 、 abs (double 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - d)等。可读性强的代码是企业对开发人员的基本要求,方法重载能够使得代码有很好的可读性。参考答案:方法重载指的是在一个类中可以声明多个相同名字的方法,而方法的形式参数有区别。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。6、请列举 Java 语言中的权限访问修饰符,并说明
7、每种权限的含义。解析:正确使用权限访问修饰符,能够有效控制类以及类成员的安全性,Java 语言中有四种访问修饰符,包括public 、同包、 protected以及 private,一般情况下,应用中的类多是 public权限,属性多是private权限,方法多是public权限。参考答案:Java 语言中有四种权限访问修饰符,即 public 、 protected、 同包以及 private,public表示公共权限, 即任何包中都可以访问:protected表示受保护权限,即同包中可以访问, 同包中的子类可以访问:同包权限是默认权限,即不显示指明权限修饰符的时候就是同包权限,表示只有同包
8、中可以访问:private是私有权限,表示只能在本类中访问。7、请列举Java 语言中的八种基本数据类型,并说明每种数据类型的含义及长度。解析:数据类型在任何一门编程语言中都是很重要的知识点,属性、方法参数、方法返回值要指定各自的数据类型。 Java 语言虽然是一门面向对象的语言。但是也定义了基本数据类型, 基本数据类型可以直接赋值, 不需要使用 new关键字创建,可以直接使用运算符进行运算,编程中经常被使用,而且Java 语言中的基本数据类型的长度固定,不会随着平台的不同而不同。参考答案: Java 语言的八种基本数据类型有:byte字节型, 8 位长度: short短整型, 16位长度,
9、int整型, 32 位长度: long 长整型, 64 位长度: float单精度浮点型。 32 位长度:double双精度浮点型, 64 位长度: char 字符型, 16 位长度:boolean 型,表示逻辑值,有true 和 false 两个值,分别表示真和假8.什么叫引用类型,引用类型和基本数据类型有什么区别?解析:很多初级程序员都能够理解int i=20;中的 int 是一种类型,称为整型。而对于类似 Employee e=new Employee(); 这样表达式中的Employee 却感觉无所适从。其实, 任何一个类都是一种类型,如Employee 就是一种类型,可以说变量e 的
10、类型就是Employee。Java语言中将类的类型称为引用类型,即reference type。可以说,除了八种基本数据类型之外的类型都是引用类型,包括API中所有的类、自定义的所有类,也包括数组。引用类型和基本数据类型的直观区别就是引用类型的变量需要使用new 调用构造方法来赋值,而基本数据类型可以直接使用“=”号赋值。但是,引用类型中的String 比较特殊,既可以使用new 关键字赋值,也可以直接使用“=”赋值,一般情况下都使用“=”直接赋值。参考答案: Java语言中除了基本数据类型之外的类型,都称为引用类型。引用类型就是类的类型,所有的对象都是引用类型,包括数组对象。引用类型必须使用
11、new 调用构造方法进行赋值, 引用类型的变量拥有自己的属性和方法,可以使用圆点调用自己的属性和方法。基本数据类型直接使用=号进行赋值,且没有自己的属性和方法,往往都在声明属性或方法时使用。9.对于 String对象,可以使用“ =”赋值,也可以使用new 关键字赋值,两种方式有什么区别?解析: String 类型是实际工作中经常使用到的类型,从数据类型上划分,String 是一个引用类型,是API中定义的一个类。所以String 类型的对象可以使用new 创建,例如String name=new String( “ ETC ” );为变量 name 进行赋值,值为“ETC ” 。然而, St
12、ring 类比起其他类有些特殊,可以使用“=”直接赋值,如String name=“ETC ” ,也是为变量name 进行赋值,值为“ ETC ” 。这两种赋值方式是有差别的,使用new 赋值,永远都是创建一个新对象,在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 新的内存空间初始化了字符串的值;而使用“=”赋值,不会每次都初始化新的字符串,而是从一个“字符串实例池”中去查找有没有要赋值的字符串,如有则直接引用;如不存在,则初
13、始化一个字符串,并放入“字符串实例池”。在实际编程中,往往使用“=”好对 String类型变量进行赋值。参考答案: 使用“=”赋值不一定每次都创建一个新的字符串,而是从 “字符串实例池”中查找字符串。使用new 进行赋值,则每次都创建一个新的字符串。10.String类是一个“不可变类” ,请解释“不可变类”的含义。解析: String 类是一个不可变类,即immutable 类。所谓不可变,意思是当一个字符串被初始化后,它的值就不会被改变。例如,String s=new String( “hello” )为将初始化一个值为 hello 的字符串, 如果调用s.toUpperCase()看起来
14、是把hello 变为大写的HELLO ,然而事实上并不会把已有的hello 变为 HELLO ,而是在新的空间初始化一个HELLO字符串。也正因为有这种不可变性,所以才能支持“字符串实例池”的使用。参考答案:所谓的不可变类,就是当字符串初始化后,就不能够被改变。11.String类和 StringBuffer 类有什么区别?解析: String 类是不可变类,字符串一旦初始化后,就不能被改变。而StringBuffer 类是可 变 类 , 字 符 串 值 可 以 呗 改 变 。 常 常 在 实 际 应 用 中 看 到 累 死 这 样 的 代 码 : String s=new(“ hello”
15、);s+=” world” ,这两句代码首先创建一个字符hello,然后将world 追加到 hello 结尾并重新赋值给变量 s。 然后, 这个过程实际上是这样的:首先创建一个StringBuffer 对象, 然后用 StringBuffer 类的 append方法追加字符串, 最后对 StringBuffer 对象调用 toString 方法合成字符串返回。 可见, 使用 +号连接字符串时,本质上是使用了可变的StringBuffer 类,经变动肯定性能效率受到影响,所以建议需要追加字符串时,可以考虑直接使用StringBuffer 类。参考答案: String 类是不可变类,即字符串值一
16、旦初始化后就不可能改变。StringBuffer 是可变字符串类,类似String 的缓冲区,可以修改字符串的值。12StringBuffer和 StringBuilder 类有什么区别?解析 : StringBuffer 是 JDK5 中增加的一个新类,在以前版本中不存在这个类。StringBuilder 中的方法和StringBuffer 中的方法基本相同,但是StringBuffer 是线程安全的,而StringBuilder 不是线程安全的,因此在不考虑同步的情况下,StringBuilder 有更好的性能。参考答案: StringBuffer 是线程安全的字符串缓冲,而StringB
17、uilder 不是线程安全的。13.包装器类型包括哪些类,有什么作用?解析:初级程序员常常对float 和 Float 或者 double 和 Double 感到混淆。在Java语言中,有八中基本数据类型,即 byte、int、long、float、double、char、boolean 。对应这八种基本数据类型,API 中定义了八个类,能把这些基本类型转换成引用类型,分别是Byte、Short、Int、Long、Double、Character、Boolean。这八个类被统称为包装器类。JDK5 之后,包装器类和基本数据类型之间可以直接转换,称为自动的装箱拆箱(boxing/unboxing ) 。例如 integer it=3;it+; 虽然写法上可以像使用基本数据类型一样使用包装器类型,但是本质上依 * 行了类似it= new Integer(3) 的转换,因此,不要轻易使用包装器类的自动装箱名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -