javaJEE基础试题.docx
《javaJEE基础试题.docx》由会员分享,可在线阅读,更多相关《javaJEE基础试题.docx(98页珍藏版)》请在冰豆网上搜索。
![javaJEE基础试题.docx](https://file1.bdocx.com/fileroot1/2023-1/2/1637aac1-3911-4e84-8b2d-c381e90a425f/1637aac1-3911-4e84-8b2d-c381e90a425f1.gif)
javaJEE基础试题
JAVA
1:
简述Java的基本历史
java起源于SUN公司的一个GREEN的项目,其原先目的是为家用消费电子产品
发送一个信息的分布式代码系统,通过发送信息控制电视机、冰箱等.
2:
简单写出Java特点,写出5个以上,越多越好
简单的、面向对象的、分布式的、安全的、稳定的、与平台无关的、可解释的、多线的、动态的语言。
3:
什么是Java?
JAVA:
一种编程语言
一种开发环境
一种应用环境
一种部署环境
4:
请写出Java的版本分类及应用方向
三种版本:
J2ME:
是面向内存有限的移动终端.为消费性产品设计的
J2SE:
是SUN公司针对桌面开发和低端商务计算方案开发的版本。
为笔记本电脑、PC机设计的
J2EE:
是一种利用JAVA2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。
为企业级的、服务器端的高端应用而设计的
5:
描述Java技术的主要特性
java虚拟机
垃圾回收
代码安全性
6:
描述Java虚拟机的功能
提供硬件平台规范
解读独立于平台的已编译的字节码
可当作硬件或软件来实现
可以在JAVA技术开发工具上或在WEB浏览器上实现
7:
简述Java代码安全性
1.字节码校验
2.沙箱机制,提供的安全机制
8:
简述Java代码的运行过程
加载代码通过类装载器装载CLASS文件
校验代码由字节码校验
执行代码由解释器将字节码转换成机器码
9:
简述如何搭建Java开发环境
首先下载安装JDK然后配置环境
1.配置PATH,
2.配置CLASSPATH
3.配置JAVA_HOME
10:
简述classpath,path,JAVA_HOME的意义和配置方法
path操作系统运行环境的路径
classpathJAVA运行应用程序时所需要的类包路径
JAVA_HOME供需要运行JAVA的程序使用
二:
11:
请描述:
一个完整的Java文件的代码分几个部分,每部分都起什么作用,大致的写法
package当前类所在位置
import当前类运行时所需要的包或类
publicclass类名{
属性定义;
方法定义:
构造方法定义;
publicstaticvoidmain(Stringargs[])例外{程序入口
语句;
}}
注释
12:
Java代码的注释有几种?
分别举例说明
1.//单行注解
2./**/块注释
3./**
*文档注释
*/
13:
什么是Java代码的语句,什么是Java代码的块,举例说明
语句是一行以分号终止的代码,例:
inta;
块是以{}为边界的一些语句的集合例:
publicvoidtt(){}
14:
什么是标示符?
标识符:
是赋予变量、类、方法的名称。
15:
标示符定义的规则?
1.首字母只能以字母、下划线、$开头,其后可以跟字母‘下划线、$和数字
2.首字母小写中间用大写字母隔开
3.标识符具有一定的含义
16:
什么是关键字?
关键字就是编程语言与机器语言的编码约定
17:
true、false、null、sizeof、goto、const那些是Java关键字
true、false、null为JAVA的关键字
18:
Java的基本数据类型有几种?
分别是?
shortintlongbooleanfloatdoublecharbyte
19:
请写出每种基本类型的默认值?
取值范围?
分别给出一个定义的例子
默认值取值范围
字节型:
0-2^7----2^7-1
字符型:
'\u0000'0----2^16-1
short:
0-2^15----2^15-1
int:
0-2^31----2^31-1
long:
0-2^63----2^63-1
float:
0.0f-2^31----2^31-1
double:
0.0d-2^63----2^63-1
boolean:
falsetrue\false
20:
在基本类型中,如果不明确指定,整数型的默认是什么类型?
带小数的默认是什么类型?
整数类型默认为int
带小数的默认为double
21:
如何定义float类型和long型
floatf=1.2f
longl=1.2L
22:
什么是变量?
变量:
一种在程序中可以改变的标识符
23:
变量的定义规则?
1.首字母小写中间用大写字母隔开其后可以跟字母‘下划线、$和数字
2.具有一定含义
3.首字母必须是字母、$、下划线,
24:
请写出Java编码约定中对下列部分的要求:
类、属性、方法、包、文件名、变量、
常量、控制结构、语句行、注释
类:
一个类文件中类名要和文件名相同,类名一定要以大写字母开头单词之间用大写字母分隔
属性:
属性名首字母小写中间用大写字母隔开
方法:
方法名首字母小写中间用大写字母隔开
包:
引用包必须写在类文件的开头,有且只能有一个包全部用小写字母
控制结构:
当语句是控制结构的一部分时,即使是单个语句,也应使用大括号将语句
封闭:
语句行:
每行只写一个语句,并使用四个缩进的空格,使代码更易读,注意用分号结束;
注释:
用注释来说明那些不明显代码的段落;
常量:
常量名一般用大写字母,单词之间用下划线分隔,一旦赋值不允许修改
25:
什么是Javadoc?
按照一定格式生成程序的文档的工具
26:
什么是引用类型?
一个用户定义类型,它可引用类和数组。
27:
什么是按值传递?
什么是按引用传递?
值传递:
就是将该值的副本传过去(基本数据类型+String类型的传递,就是按值传递)
按引用传递:
就是将值的内存地址传过去(除基本数据类型+String以外类型的传递,就是引用传递)
28:
那些是按值传递?
那些是按引用传递?
基本数据类型+String类型按值传递
除基本数据类型+String类型以外,比如Models[]按引用传递
29:
如何创建一个新对象?
如何使用对象中的属性和方法?
publicclassS{}
通过对象的实例用(.)来调用属性和方法;
静态的方法和属性,也可以直接用类(.)来调用;
30:
简述new关键字所做的工作
new关键字就是为事先声明的对象分配一块内存区域;
31:
简述”=”和”==”的功能和区别
"="赋值,"=="判断==前后两个值得内存地址是否相等;
区别:
=:
为赋值表达式
==:
为逻辑表达式
32:
什么是实例变量?
什么是局部变量?
什么是类变量?
什么是final变量?
实例变量:
类中定义的变量,即类成员变量,如果没有初始化,会有默认值;
局部变量:
在方法中定义的变量,必须初始化;
类变量:
用static可修饰的属性;
final变量:
final属性只允许赋值一次,且只能通过构造方法赋值;定义后也就
是一个常量;
33:
简述上述各种变量的定义规则和使用规则?
实例变量:
它不需要static关键字来声明,只要对象被当作引用,实例变量就将存在;
局部变量:
在方法内任意定义变量即为局部变量;
类变量:
必须用static修饰;
final变量:
不可以在修改的
34:
a++和++a的区别?
a++:
先使用,后加1
++a:
先加1,后使用
34:
请描述instanceof、?
:
、&、&&各自的功能
instanceof:
用来判断某个实例变量是否属于某种类的类型。
?
:
三目运算符:
表达式1?
表达式2:
表达式3
如果表达式1为true,执行表达式2,否则执行表达式3
&:
位运算:
按位与
&&:
逻辑运算:
逻辑与
35:
请描述>>、<<、>>>的功能
>>:
算术或符号右移位运算符
<<:
算术或符号右移位左移运算符
>>>:
逻辑或非符号右移位运算符
36:
请描述什么是强制类型转换?
什么是自动类型转换?
什么是向上造型?
并分别举例说明
强制类型转换:
在一个类型前面加(),来强制转换
longl=9L;
inti=(int)l;
自动类型转换:
inti=5;
Stringstr=""+i;
向上造型:
把范围小的造型为范围大的类型,
inti=2;
longl=i;
37:
请写出完整的if条件控制语句的结构
if(布表达式){
语
}else{
}
38:
请写出完整的switch语句的结构
switch(字符){
case字符:
语句
break;
case字符:
语句
break;
default:
语句
}
39:
请写出完整的for语句的结构
for(初始语句;条件语句;步长){
}
40:
请写出完整的while语句的结构
while(boolean语句){
}
41:
请写出完整的dowhile语句的结构
do{
}while(boolean语句);
42:
请描述break和continue的功能和用法
break:
终止最近的循环
continue:
跳出本次循环,执行下一次循环
//以上不完全
43:
定义一个一维的int数组,先创建它,并初始化它,给它赋值,然后输出其中的一个值
publicclassArr{
publicstaticvoidmain(Stringargs[]){
inta[]=newint[5];
a={1,2,3,4,5};//错误,只能在初始化时这样做
a[0]=1;
a[1]=2;
System.out.println(a[0]);
}
}
44:
定义一个一维的A类型数组,直接定义并赋值,然后输出其中的一个值
publicclassA{
publicstaticinti;
publicstaticvoidmain(Stringargs[]){
Aaa=newA();
Abb=newA();
Aa[]={aa,bb};
a[0].i=2;
System.out.println(a[0]);
}
}
45:
把上面的数组改成2维的数组
publicclassA{
publicstaticinti;
publicstaticvoidmain(Stringargs[]){
Aa[][]=newA[5][5];
a[0][0].i=2;
System.out.println(a[0][0]);
}
}
46:
举例说明数组拷贝方法的使用:
arraycopy方法
publicclassA{
publicstaticvoidmain(Stringargs[]){
inta[]=newint[5];
intb[]=newint[5];
System.arraycopy(a[5],0,b[5],0,a.length)
System.out.println(b[0][0]);
}
}
二、面向对象
1:
OOP(面向对象)语言的三大特征是?
封装性,继承性,多态性
2:
请描述方法定义的完整的语法结构
权限修饰符修饰符返回类型方法名(参数)例外{
方法体;}
访问权限+访问修饰符+返回值+方法名+参数列表+例外列表+(块)方法内部代码
3:
什么是重载?
什么情况下出现?
在一个类中出现相同的方法名但参数列表不同时,这种情况就是重载
其本质是创建一个新的成员方法
此方法在同一个类中出现
4:
简述重载的规则
1.方法名相同,参数列表不同
2.返回类型可以不同
3.重载父类的方法时访问权限只能放大,例外列表只能少
5:
什么是构造和析构方法?
功能是?
构造方法:
每个类至少有一个构造方法,类构成实例化时调用的方法
1.方法名和类名相同
2.无返回值类型
格式:
访问权限类名{};
1.有构造时,则无默认
2.无构造方法时,默认为空(无参数,方法体为空)
jc垃圾回收
析构方法:
finalize
类销毁时,自动调用方法
当对象在内存中被删除时,自动调用该方法
在此方法中可以写回收对象内部的动态空间的代码
构造方法:
类初始化时调用的方法。
可写可不写,如果不写就会有一个默认
的构造方法
析构方法:
当对象被从内存中删除时调用的方法,在析构成员方法内,可以填写
用来回收对象内部的动态空间的代码
6:
简述this和super的功能和用法
this:
访问当前类的属性或方法,不可以在静态方法中使用,在调用其它构造方法时,
必须放在该构造方法的第一行
能调用除构造方法以外所有的属性,方法;
通过This(.) 来调用方法和属性
super:
访问父类
super只能调用父类的方法和属性,
在调用父类的构造方法时必须放在子类构造方法下面的第一行;
通过Super(.)来调用父类的属性和方法
7:
简述Java的访问修饰符类型?
分别有什么功能?
public公开的,任何一个类都有可以访问
private私有的,只能在本类中被访问
protected同包同类,只可被它的子类访问
default只能被同一个包中类访问
8:
分别说明:
在类上、在属性上、在方法上等能使用那些访问修饰符
在类上:
public
在方法上:
访问权限:
publicprotectedprivatedefault
方法修饰符:
static
final
返回类型:
void
在属性上:
publicprotectedprivatedefault
static
final
9:
简述什么是包?
包的功能
包:
对所定义的多个JAVA类进行分组,将多个功能相关的类定义到一个包(文件)中
功能:
1.易于查找和使用适当的类
2.包不止包含类和接口,还可以包含其它包,形成层次的包空间
3.有助于避免命名冲突
10:
请写出5个以上的JDK中的包,以及他们的基本功能
java.awt:
包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面
java.lang :
提供java编成语言的程序设计的基础类
java.io :
包含提供多种输出输入功能的类,
:
包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKET,
java.applet :
包含java小应用程序的类
java.util :
包含一些实用性的类
11:
什么是包装类?
Java中都有哪些包装类
BooleanByteShortIntegerLongFloatDoubleCharactor
在JDK中针对各种基本类型分别定义相应的引用类型--------------称为封装类
12:
分别表述类的三大特性及其他们的功能
封装性继承性多态性
封装:
隐藏类的实现细节、迫使用户去使用一个接口去访问数据、使代码更好维护
继承:
子类可以直接继承使用父类的方法,程序员只需要做的是定义额外特征或规定将适用的变化
多态性:
同一种功能拥有许多不同的实现方式
13:
如何实现继承?
继承的规则?
publicclassAextendsB{
}
1.单继承性
2.构造方法不能继承
3.super引用父类,调用父类的属性,方法
4.当子类中出现与父类的方法名,返回类型,参数列表相同的方法时要覆盖此方法
14:
什么是方法的覆盖?
什么情况下出现?
方法覆盖:
子类可以修改从父类继承过来的行为,子类可以创建一个与父类方法有不同功能的方法
在同类型中出现相同的名称、返回类型方法名和参数列表的方法时
在父子类时
15:
方法覆盖的规则?
方法名要和父类中被覆盖的方法名相同,返回类型相同
参数列表要和父类中被覆盖方法的参数列表相同
访问权限要大于等于被覆盖方法的权限
例外列表要小于等于被覆盖方法的例外列表
16:
如何调用父类的构造方法?
如何调用自己的构造方法?
要调用父类的构造方法通过在子类的构造方法中第一行写super(参数)能给父类传参;
要调用自己的构造方法通过this(参数)或者直接调;
17:
如何确定在多态的调用中,究竟是调用的那个方法?
new的是哪一个类就是调用的哪个类的方法
18:
static修饰符的功能是?
可以用在什么地方?
怎么访问?
static修饰符功能:
1.共用一块内存区域,也就是一个变量或成员方法对所有类的实例都
是相同的
2.静态成员方法和静态变量的优点在于他们能在没有创建类的任何一个实例的情况下被引用
3.可以用在方法或属性上
访问方式:
1.直接使用类名调
2.new一个实例,用实例调
19:
static的基本规则
1.类中的静态方法不允许调用非静态的属性和方法,只可以调用静态的属性和方法
2.可以用类名直接调用静态类中的属性和方法
3.静态方法中不允许出现this和super
4.静态方法不能被非静态方法覆盖
5.构造方法不允许声明static
6.静态变量为类变量,可以直接调
7.非静态变量为实例变量,通过实例调用
20:
final修饰符的功能是?
可以用在什么地方?
功能:
标记所有通用的功能,不能随意更改
可以用在类、属性和方法上
21:
final的基本规则
final类不能被继承
final成员变量只允许赋值一次,且只能通过构造方法里赋值
final局部变量即为常量,只能赋值一次
final方法不允许被子类覆盖
final一般用于标记那些通用性的功能不能随意修改
22:
什么是抽象类?
抽象类:
一个类中声明方法存在而不是实现,以及带有对已知行为的方法的实现,这样的类通常被称做抽象类
23:
抽象类的规则
类内部至少包含一个没有实现体的方法
用abstract修饰
不能够直接使用抽象类,必须通过子类继承并且实现
24:
什么情况下使用抽象类
当一个类的一个或多个方法是抽象类时;
当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时;
当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时
25:
equals方法和”==”的功能和区别
功能:
判断对象是否相等
区别:
equals方法比较的是对象的值
==:
比较的是对象值的内存地址,对基本数据类型来说==比较的也是值
26:
toString方法的功能和基本写法
返回一个String类型
publicStringtoString(){
}
30:
String的方法的功能和基本使用方法,请描述5个以上
substring(参数1,参数2);功能:
取字符串中参数1到参数2的的所有字符;"String".subString(0,1);
replace(参数1,参数2);功能:
用参数1中的值替换字符串中所有参数2的值"String".replace(ing,tt);
equals(); 功能:
判断两个字符串是否相等
"String".equals("tt");
trim(); 功能:
去掉字符串两边的空格
"String".trim();
indexof(); 功能:
查找字符串中参数所在位置,并返回字符串第一个出该参数的下标
"String".indexOf("ing");
split(); 功能:
根据参数分割该字符串"String".split("-");
31:
为什么使用StringBuffer类?
有什么功能和优点?
--只创建一个对象
–StringBuffer对象的内容是可以被修改的
–除了字符的长度之外,还有容量的概念
–通过动态改变容量的大小,加速字符管理
32:
举例说明如何使用StringBuffer
StringBuffersb=newStringBuffer();
sb.append("aaa");
sb.flush();
33:
如何给Java代码设置系统属性?
如何在程序中使用它们
设置在一个扩展名为properties的文件,内容为key、value的映射例如“a=2”;
System.getProperties();
System.setProperties();
34:
简述properties文件的结构和基本用法
结构:
key=value
用法:
System.getProperties方法返回系统的Properties对象。
System.getProperty(StringpropertyName)方法返回对应名字属性的值。
System.getProperty(Stringname,Stringvalue)重载方法当没有name指定的属性时,返回value指定的缺省值。
35:
什么是接口?
接口的定义规则?
接口就是定义多种方法,通过实现接口中所有方法的抽象类.
publicinterfaceTt{
publicvoidoutPut();
publicinttt();
}
36:
接口的作用?
为什么使用接口?
多重继承
封装、隔离
功能,实现的分离
多态
便于后期维护
接口是可插入性的保证。
37:
什么是多重接口
就是一个类实现多个接口
38:
描述接口的基本思想?
封装 隔离
接口及相关机制的最基本作用在于:
通过接口可以实现不相关类的相同行为,
而不需考虑这些类之间的层次关系。
根据接口可以了解对象的交互界面,而不需了解对象所属的类。
面向对象程序设计讲究“提高内聚,降低耦合”。
39:
如何在代码中使用接口?
publicclassMyCastimplementsTt{
publicvoidoutPut(){}
publicinttt(){
return0;}}
40:
举例说明如何把接口当作类型使用
publicinterfaceAnimal(){
publicvoidtt();}
publicclassDogimplementsAnimal{
publicvoidtt(){}}
Animalani=newDog();
41:
如何选择接口和抽象类?
为什么?
1.优先选择接口
2.优先使用对象组合,少用继承
3.抽象类一般用在定义子类的行为而父类又有特定行为的子类情况中
4.在接口和抽象类的选择上,必须遵守这样一个原则:
行为模型应该总是通过接口而