java企业关注的技能Word下载.docx
《java企业关注的技能Word下载.docx》由会员分享,可在线阅读,更多相关《java企业关注的技能Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
6.请列举Java语言中的权限访问修饰符,并说明每种权限的含义。
Java语言中有四种权限访问修饰符,即public、protected、同包以及private。
Public表示公共权限,即任何包中都可以访问;
protected表示受保护权限,即同包中可以访问,不同包中的子类可以访问;
同包权限是默认权限,即不显式指明权限修饰符的时候是同包权限,表示只有同包中可以访问;
private是私有权限,表示只能在本类中访问。
7.请列举Java语言中的八种基本数据类型,并说明每种数据类型的含义及长度。
Java语言的八种基本数据类型有:
byte字节型,8位长度;
short短整型,16位长度;
int整型,32位长度;
long长整型,64位长度;
float单精度浮点型,32位长度;
double双精度浮点型,64为长度;
char字符型,16位长度;
boolean型,表示逻辑值,有true和false两个值,分别表示真和假。
8.什么叫引用类型,引用类型和基本数据类型有什么区别?
Java语言中除了基本数据类型之外的类型,都称为引用类型。
引用类型就是类的类型,所有的对象都是引用类型,包括数组对象。
引用类型必须使用new调用构造方法进行赋值,引用类型的变量拥有自己的属性和方法,可以使用圆点调用自己的属性和方法。
基本数据类型直接使用=号进行赋值,且没有自己的属性和方法,往往都在声明属性或方法时使用。
9.对于String对象,可以使用“=”赋值,也可以使用new关键字赋值,两种方式有什么区别?
使用“=”赋值不一定每次都创建一个新的字符串,而是从“字符串实例池”中查找字符串。
使用new进行赋值,则每次都创建一个新的字符串。
10.String类是一个“不可变类”,请解释“不可变类”的含义。
所谓不可变类,就是字符串初始化后,就不能够被改变。
11.String类和StringBuffer类有什么区别?
String类是不可变类,即字符串值一旦初始化后就不恩能够被改变。
StringBuffer类是可变字符串类,类似String的缓冲区,可以修改字符串的值。
12.StringBuffer和StringBuilder类有什么区别?
StringBuffer是线程安全的字符串缓冲,而StringBuilder不是线程安全的。
13.包装器类型包括哪些类,有什么作用?
包装器类型包括Byte、Short、Integer、Long、Float、Double、Character、Boolean这八个类,主要用来对byte、short、int、long、float、double、char、boolean这八种基本数据类型进行包装,使其成为引用类型。
14.请说明Java语言中的值传递规则。
基本数据类型传递的是值,引用类型传递的是引用,即虚地址。
15.使用static修饰属性或方法后,属性和方法有什么特征?
static修饰属性或方法后,属性和方法不再属于某个特定对象,而是所有对象共享,也可以说static成员不依赖某个对象,在类加载时就被初始化。
Static修饰的属性或者方法,可以直接使用类名调用,而不用先实例化对象再调用。
16.使用final修饰属性后,属性有什么特征?
final修饰属性后,属性就成为一个常量。
常量只要被赋值,就不能被改变。
17.请说明操作符==的作用。
==可以用来比较基本类型或者引用类型。
比较基本类型时,==用来比较数值二进制的值,比较引用类型时,用来比较对象的虚地址。
18.请说明&
&
与&
的区别和联系。
会发生短路问题,当第一个表达式的值为false时,将直接返回结果false,而不会判断第二个表达式的值。
而&
不会发生短路问题,即使第一个表达式的值是false,依然会判断第二个表达式的值。
19.请列举Java语言中的几种位运算符,并说明位运算符的作用。
Java语言中有三种移位运算符,分别是<
<
:
左移运算符,左移1位相当于乘2。
>
有符号右移,右移一位相当于除2;
无符号右移,忽略符号位,空位都以0补齐。
20.break语句能在什么场景使用。
break语句可以在循环体中使用,也可以在switch的case语句中使用。
21.for循环中的break语句和continue语句的作用。
break可以用来中断循环,continue可以用来继续下一次循环。
第二部分 类之间的关系
1.用代码表示A类关联B类的情况。
classA{
PrivateBb;
Publicvoidset(Bb){
this.b=b;
}}
2.请说明Java语言中数组的基本概念,数组的作用,以及数组的声明创建方式。
数组是相同元素的集合,作为数据容器使用。
声明创建一个int型数组,如下所示:
int[]x=newint[3];
其中3是数组的长度,该数组能够存储3个int型变量。
3.使用代码,创建一个长度为5的String型数组,并使用增强for循环迭代数组打印输出数组中的元素。
String[]sArray=newString[5];
for(Strings:
sArray){
System.out.println(s);
}
4.说明Arrsys类的作用。
Arrays类是java.util包中的一个类,类中所有方法都是static方法,这些方法都是数组对象的工具方法,能够对数组进行处理,如sort方法可以对数组元素进行排序。
5.请使用简单代码展示A类依赖B类的含义。
publicvoidf(B,b){}
6.请说明依赖关系和关联关系的区别。
依赖关系是一种瞬时关系,A依赖B,指的是A的某个行为的参数是B的类型,也就是说,A要想实现这个行为,必须依赖B的实例。
A关联B,是一种长久的关系。
指的是B作为A的属性存在,只要实例化一个A的对象,就会为这个A的对象实例化一个B的对象,作为他的属性使用,可以在A中任何需要使用B的地方使用B。
7.继承有什么作用,Java语言中的继承有什么特点?
继承主要为了能够重复使用父类中的成员。
Java语言中的继承是单继承,也就是说一个类最多只能继承一个父类。
8.什么是方法覆盖(override)?
并说明方法覆盖与方法重载(overload)的区别。
覆盖是发生在继承关系的子类中,当子类要修改从父类继承到得某个方法的方法体时,就可以在子类中声明一个与父类同名字、同参数并且同返回值类型的方法,这就是方法覆盖。
而重载与继承没有关系,指的是在一个类中可以同时声明多个同名但不同参数的方法,称为重载。
9.请说明什么是抽象类?
抽象类有什么作用?
抽象类是不能实例化的类,使用abstract修饰。
抽象类往往用来做父类使用,定义一些子类的共同属性或行为。
10.请说明抽象方法的含义,并说明抽象类与抽象方法的关系。
抽象方法是没有方法体的方法,使用abstract修饰符修饰。
抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类。
11.super关键字的两种用法。
super关键字有两种用法。
第一种是在子类构造方法的第一行,调用父类的某个构造方法,如super();
表示调用父类中的没有参数的构造方法;
犹如super(10);
表示调用父类中的具有一个整型参数的构造方法。
第二种用法是子类中调用父类中的成员,如super.f();
意思是调用父类中的f()方法。
12.final类与final方法有什么作用?
final类是不能够被继承的关系,称为终极类,如String类就是final类,不能有子类。
final修饰方法后,是终极方法,不能被子类覆盖,但是可以被子类继承使用。
13.什么是多态参数?
多态参数有什么作用?
多态参数就是参数的类型是某个父类类型,具体为这个参数赋值的时候,就可以使用该父类的任意子类的对象。
使用多态参数,可以使得程序的扩展性更好,即使扩展了新的子类,方法不需要任何修改,就能接受子类类型进行处理。
14.Object类有什么特点?
Object类是所有类的直接或间接的父类。
15.Object类中的toString方法有什么作用?
toString方法可以把对象作为字符串返回。
16.Object类中的equals方法与hashCode方法有什么作用?
Object类中的equals方法用来比较两个引用的引用值,hashCode用来返回引用的内地址的十六进制数值。
在Set以及Map集合中,判断两个元素是否重复时,往往需要使用这两个方法。
这两个方法往往被子类覆盖,覆盖的规则是:
如果存在x和y两个对象,调用x.equals(y)返回true时,那么调用hashCode方法的返回值也应该相同;
如果x.equals(y)返回false时,那么调用hashCode方法返回值可能相同,也可能不同。
17.接口有什么特点,与抽象类有什么区别?
接口的特点是不能定义变量,而且所有方法都是抽象方法。
而抽象类中可以有变量,也不强制必须有抽象方法。
18.类继承父类与类实现接口,有什么区别?
类继承父类只能是单继承,也就是一个子类最多只能有一个父类;
而类实现接口可以多实现,就是一个子类可以同时实现多个接口,并覆盖所有接口中的所有抽象方法。
19.Comparable接口有什么作用?
Comparable接口定义了compareTo(Objecto)方法,可以用来实现对象的比较逻辑。
这个接口常常在其他API中强制使用,用来规范对象的比较逻辑。
第三部分异常处理
1.什么是异常?
异常和错误有什么区别?
异常时一些不正常的事件,能够中断程序的正常执行,例如除0计算就是异常。
异常和错误不同,异常是可以被处理的,而错误往往是不能够被处理的,如内存溢出错误。
2.NullPointerException是什么异常?
什么情况发生该异常?
NullPointerException是空指针异常,当一个引用没有被赋值,就是null值。
如果这种情况下,使用该引用调用其属性或者方法,就会发生NullPointerException异常。
3.说明try/catch/finally语句块的作用。
try语句块用来包含可能发生异常的语句,catch块用来捕获异常,finally块用来包含必须执行的语句。
4.如何使用语句抛出异常,抛出异常后如何处理?
使用throw语句就可以抛出异常,如thrownewXXXException()。
抛出异常后,一般情况下会在方法声明处使用throws声明该类型的异常,调用该方法时编译器将提示处理异常。
5.throws关键字和throw关键字有什么区别和联系?
throw用来在方法体内抛出异常,而throws用来在方法声明处声明异常。
这两个关键字有着一定联系。
如果一个方法中使用了throw关键字抛出了异常,那么要么立即使用try/catch语句进行捕获,要么就使用throws进行声明,否则将出现编译错误。
然而,并不是只有使用了throw关键字后才能使用throws关键字,语法上来说,任何一个方法都可以直接使用throws关键字,抽象方法也可以使用。
6.什么是自定义异常类?
为什么要自定义异常类?
自定义异常类区别于API中的标准异常类,指的是开发人员自己创建的异常类。
只要继承API中某个异常类就可以自定义一个异常类,常常继承Exception类。
自定义异常类主要为了标记业务逻辑中非正常事件流,避免与API中的标准异常混淆。
第四部分核心API
1.请画出Java集合框架的主要接口和类的继承关系。
2.Collection接口和Map接口分别定义了什么集合类型?
有什么区别?
Collection接口是传统的集合接口,可以把单个对象存储进来。
而Map接口是映射接口,存储的是键值对。
3.用简单代码演示创建一个泛型类型为Customer类的List对象,并使用增强for循环迭代该集合。
List<
Customer>
list=newArrayList<
();
for(Customercust:
list){
}
4.List和Set集合有什么区别?
List实现了列表类型的集合,List中的元素是有顺序(ordered)的,每个元素根据加入集合的顺序而对应一个索引值,可以根据这个索引值返回集合元素。
而Set实现了不重复的集合,即Set中的元素不能够重复,重复的元素将无法添加到集合中。
5.List接口有哪几个主要的实现类?
分别说明其特征。
List接口中有以下几个常用实现类:
①ArrayList:
实现了动态数组的特征。
②LinkedList:
实现了链表的数据结构,LinkedList也可以用作栈或者队列。
③Vector:
Vector类的功能ArrayList都可以实现,区别在于Vector是线程同步的。
6.Collection和Collections有什么区别?
Collection是一个接口的名字,定义了集合类型的共同特征。
而Collections是一个类的名字,是集合类型的工具类,类中定义了大量的静态方法,能够操作集合对象。
7.如何将一个Collection转换成数组?
Collection接口定义了toArray(T[]a)方法用来将集合转换为数组,其中T是泛型类型。
8.假设存在文本文件etc.doc,请用代码展示将该文件按行读出,并打印输出到控制台。
Filefile=newFile(“etc.doc”);
Try{
FileReaderfr=newFileReader(file);
BufferedReaderbr=newBufferedReader(fr);
Stringline=br.readLine();
while(line==null){
System.out.println(line);
line=br.readLine();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
9.请说明AWT、Swing以及SWT的区别和联系。
AWT(AbstractWindowsToolkit)是Java语言中最原始的GUI工具包;
JavaSwing是JavaFoundationClasses(JFC)的一部分,是在AWT基础上发展而来的GUIAPI;
AWT和Swing都是原Sun公司推出的JavaGUI工具包,而SWT是Eclipse组织为了开发EclipseIDE环境所编写的一组底层GUIAPI。
10.假设某GUI中存在一个按钮button,请使用匿名内部类对该按钮注册监听器,使得点击按钮后应用能够推出。
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
System.exit(0);
});
11.使用Java语言如何创建线程对象?
请列出常用的两种方法。
Java语言中经常使用两种方法创建线程。
①创建Thread类的子类,在子类中覆盖Thread类的run方法,实现线程的运行体,只要创建该子类对象对象就是线程对象。
②创建Runnable接口的实现类,在实现类中覆盖接口中的run方法,实现线程的运行体。
使用Thread(Runnable)构造方法可以创建线程对象,参数是Runnable接口实现类的实例。
12.关键字synchronized有什么作用?
用简单代码展示synchronized的用法。
synchronized可以将某个代码块或者某个方法进行线程同步,被同步的代码块在一个时刻只能被一个线程访问,只有当前线程处理结束后,方能被其他线程访问。
例如:
publicvoidrun(){
for(inti=0;
i<
50;
i++){
synchronized(this){System.out.println(Thread.currentThread().getName()+”:
x=”+x);
x++;
}}}
13.线程之间通信的方法有哪几个?
分别起到什么作用?
线程通信的方法有三个,在Object类中定义。
①wait方法:
使得线程进入等待状态。
②notify方法:
随意通知等待池中的某一个线程。
③notifyAll方法:
通知等待池中所有线程。
14.基于TCP协议的网络编程,如何在客户端和服务器端传输数据?
参考答案:
基于TCP协议的网络编程,主要使用Socket类或得输入流和输出流,进一步在客户端和服务器端进行输入输出操作。
15.基于UDP协议的网络编程,如何在客户端和服务器端传输数据?
基于UDP协议的网络编程,主要使用数据报传输数据,Java语言API中定义了DatagramPacket类,用来表示一个数据报。
16.Date和Calendar类有什么区别和联系?
Date类用来表示某个特定瞬间,能够精确到毫秒。
而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,Calendar类中就定义了这样一系列方法。
往往可以先创建一个Date实例,然后通过Calendar中的setTime方法将该实例关联到Calendar,接下来就可以使用Calendar中的方法处理Date实例中的信息。
17.DateFormat类有什么作用?
用简单代码展示其使用方法。
DateFormat是一个用来对日期和时间类型进行格式转换的类,该类是一个抽象类,定义了日期时间格式化的通用方法。
DateFormatformat1=DateFormat.getInstance();
System.out.println(format1.format(newDate()));
18.SimpleDateFormat类有什么作用?
SimpleDateFormat类是DateFormat类的子类,可以非常灵活地定义日期显示格式。
SimpleDateFormatsdf1=newSimpleDateFormat(“yyyy年MM月dd日hh时mm分ss秒EE”,Locale.CHINA);
System.out.println(sdf1.format(newDate()));
19.Java语言中与国际化相关的类有哪几个?
说明其主要作用。
Java语言中与国际化相关的类主要有三个:
①java.util.Locale:
对应一个特定的国家/区域、语言环境。
②java.util.ResourceBundle:
用于加载一个资源包,并从资源包中获取需要的内容。
③java.text.MessageFormat:
用于将信息格式化,如动态为占位符赋值等。
20.Java语言中与格式化相关的类有哪几个?
Java语言中主要有三个和格式化相关的类:
①DateFormat:
用来对日期进行格式化,并有子类SimpleDateFormat对其进行了扩展。
②MessageFormat:
用来对信息进行格式化。
③NumberFormat:
用来对数字进行格式化,并有ChoiceFormat和DecimalFormat两个子类对其进行了扩展。
21.Java语言中使用哪两个类封装大数据类型?
分别有什么作用?
Java语言中有两个大数据类型,及BigInteger和BigDecimal,其中BigInteger可以封装任意精度的整型数值,而BigDecimal可以封转任意精度的有符号数,包括整数和浮点数。
22.什么是反射?
反射有哪些作用?
反射式一种强大的工具,能够用来创建灵活的代码,这些代码可以在运行时装配,利用反射机制能够实现很多动态的功能,例如在运行期判断一个对象有哪些方法、动态为对象增加成员、运行期调用任意对象的任意方法等。
23.有哪几种方法可以返回Class类的对象?
可以有三种方式返回Class类型对象:
①使用Object类中的getClass方法;
②使用Class类的forName方法;
③使用“类名.class”形式返回Class实例。
第五部分其他特性
1.什么是泛型?
泛型有什么作用?
泛型的本质就是参数化类型,也就是说把数据类型指定为一个参数。
在需要声明数据类型的地