java基础面试题答案.docx
- 文档编号:6935250
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:45
- 大小:39.28KB
java基础面试题答案.docx
《java基础面试题答案.docx》由会员分享,可在线阅读,更多相关《java基础面试题答案.docx(45页珍藏版)》请在冰豆网上搜索。
java基础面试题答案
ava基础
1:
jdk,jre,jvm分别是什么JRE(JavaRuntimeEnvironment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JVM是Java虚拟机
JDK是JavaDevelopKit,Java的开发工具包
2:
3:
public,protect和private区别public人缘好,跟谁都好,
protect只和熟人好,
private比较自闭.
不过他们是三胞胎.
class是他们的爹.
谁大你看着办吧
4:
this有两种用法
public class Test {
private String name;
private int age;
public Test() {}
public Test(String name) {
// this代表这个类声称后的对象,在内部可以取得这个类的属性
this.name = name;
}
public Test(String name, int age) {
// 这是第二中用法,跟第一种概念不一样,他值调用这个类的具有一个String 参数的构造方法
this(name);
// this代表这个类声称后的对象,在内部可以取得这个类的属性
this.age = age;
}
public String getName() {
// this代表这个类声称后的对象,在内部可以取得这个类的属性
return name;
}
public void setName(String name) {
// this代表这个类声称后的对象,在内部可以取得这个类的属性,这里的String name是外部变量,跟this.name是class内部的属性,存放地质是不一样的。
this.name = name;
}
public String getRealName() {
// 类内部所以可以引用内部方法,把this堪称是这个类声称后的对象在内部的调用就方便理解多了
return this.getName() + "John";
}
}
5:
Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。
数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。
实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。
8中类型表示范围如下:
byte:
8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:
16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:
32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:
64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:
32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:
64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:
只有true和false两个取值。
char:
16位,存储Unicode码,用单引号赋值。
6:
解释一下==号,他比较的是一个对象在内存中的地址值,
比如2个字符串对象
Strings1=newString("str");
Strings2=newString("str");
如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。
equals的情况比较复杂,它是java.lang.Object类中的一个方法。
因为java中所有的类都默认继承于Object,所以所有的类都有这个方法。
在Object类源码中是这样写的。
publicbooleanequals(Objectobj){
return(this==obj);
}
他同样使用==号进行内存地址的比较。
但是许多java类中都重写了这个方法,比如String。
publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
if(anObjectinstanceofString){
StringanotherString=(String)anObject;
intn=count;
if(n==anotherString.count){
charv1[]=value;
charv2[]=anotherString.value;
inti=offset;
intj=anotherString.offset;
while(n--!
=0){
if(v1[i++]!
=v2[j++])
returnfalse;
}
returntrue;
}
}
returnfalse;
}
String里的方法,如果==号比较不相等,还会进行一下值的比较。
所以equals方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。
如果没有重写该方法,那么他和==号等价。
1.
2.this关键字含义,用法
3.java中的基本数据类型
4.==和equals的区别
5.break和continue的区别
6.switch里的参数
7.final,finally和finalize的区别
8.Collection和Collections的区别
9.String,StringBuffer,StringBuild区别
10.List、Map、Set三个接口,存取元素是,各有什么特点
面向对象
11.面向对象特征分别是什么
12.重写和重载的区别
13.继承和多态的区别
14.抽象类和接口区别
高级
15.进程线程的区别
16.启动一个线程是用run()还是start()区别
17.sleep()和wait()区别
18.线程的状态
19.Error,RuntimeException,Excception区别
扩展
20.Java的垃圾回收机制
21.内存泄露举例
22.Java中的强引用和软引用区别
23.简述守护线程
24.java与c++进程怎么通信
编程运行结果
classA{
/*父类构造方法*/
publicA(){
System.out.println("Aconstructor");
}
/*父类静态块*/
static
{
System.out.println("AstaticBlock");
}
/*父类非静态块*/
{
System.out.println("Anon-staticBlock");
}
/*父类静态方法*/
publicstaticvoidprintStaticMethod(){
System.out.println("AprintStaticMethod");
}
/*父类普通方法*/
publicvoidprintNormalMethod(){
System.out.println("AprintNormalMethod");
}
}
classBextendsA{
/*子类1构造方法*/
publicB(){
System.out.println("Bconstructor");
}
/*子类1静态块*/
static{
System.out.println("BstaticBlock");
}
/*子类1非静态块*/
{
System.out.println("Bnon-staticBlock");
}
/*子类1静态方法*/
publicstaticvoidprintStaticMethod(){
System.out.println("BprintStaticMethod");
}
/*子类1普通方法*/
publicvoidprintNormalMethod(){
System.out.println("BprintNormalMethod");
}
}
classCextendsA{
/*子类2构造方法*/
publicC(){
System.out.println("Cconstructor");
}
/*子类2静态块*/
static{
System.out.println("CstaticBlock");
}
/*子类2非静态块*/
{
System.out.println("Cnon-staticBlock");
}
/*子类2静态方法*/
publicstaticvoidprintStaticMethod(){
System.out.println("CprintStaticMethod");
}
/*子类2没有override父类的普通方法*/
}
publicclassTest{
publicstaticvoidmain(String[]args){
Aa1=newB();
Aa2=newC();
a1.printStaticMethod();
a1.printNormalMethod();
a2.printStaticMethod();
a2.printNormalMethod();
}
}
AprintStaticMethod
AprintNormalMethod
static int testtry(){
int ret=0;
try{
ret=1;
return ret;
} finally{//
ret=3;
System. out.println(ret);
}
}
//先执行 try 里的代码,,在执行 try 的 return 之前,,要先执行final字句结果是3finally block会在return之前执行如果inta=testtry()
那a的值是1,输出3
编程序
1.创建多线程的两种方法举例
2.线程同步
3.冒泡排序
4.快速排序
5.
6.
7.
类的继承习题
一、选择题
1.Java语言的类间的继承关系是(B)。
A)多重的B)单重的C)线程的D)不能继承
2.以下关于Java语言继承的说法正确的是(C)。
A)Java中的类可以有多个直接父类B)抽象类不能有子类
C)Java中的接口支持多继承D)最终类可以作为其它类的父类
3.现有两个类A、B,以下描述中表示B继承自A的是(D)。
A)classAextendsBB)classBimplementsA
C)classAimplementsBD)classBextendsA
4.下列选项中,用于定义接口的关键字是(A)。
A)interfaceB)implementsC)abstractD)class
5.下列选项中,用于实现接口的关键字是(B)。
A)interfaceB)implementsC)abstractD)class
6.Java语言的类间的继承的关键字是(B)。
A)implementsB)extendsC)classD)public
7.以下关于Java语言继承的说法错误的是(A)。
A)Java中的类可以有多个直接父类B)抽象类可以有子类
C)Java中的接口支持多继承D)最终类不可以作为其它类的父类
8.现有两个类M、N,以下描述中表示N继承自M的是(D)。
A)classMextendsNB)classNimplementsM
C)classMimplementsND)classNextendsM
9.现有类A和接口B,以下描述中表示类A实现接口B的语句是(A)。
A)classAimplementsBB)classBimplementsA
C)classAextendsBD)classBextendsA
10.下列选项中,定义抽象类的关键字是(C)。
A)interfaceB)implementsC)abstractD)class
11.下列选项中,定义最终类的关键字是(D)。
A)interfaceB)implementsC)abstractD)final
12.下列选项中,哪个是java语言所有类的父类(C)
A)StringB)VectorC)ObjectD)KeyEvent
13.java语言中,用于判断某个对象是否是某个类的实例的运算符是(A)
A)instanceofB)+C)isinstanceD)&&
14.下列选项中,表示数据或方法可以被同一包中的任何类或它的子类访问,即使子类在不同的包中也可以的修饰符是(B)
A)publicB)protectedC)privateD)final
15.下列选项中,表示数据或方法只能被本类访问的修饰符是(C)
A)publicB)protectedC)privateD)final
16.下列选项中,接口中方法的默认可见性修饰符是(A)
A)publicB)protectedC)privateD)final
17.下列选项中,表示终极方法的修饰符是:
(B)
A)interfaceB)finalC)abstractD)implements
18.下列选项中,定义接口MyInterface的语句正确的是:
(A)
A)interfaceMyInterface{}B)implementsMyInterface{}
C)classMyInterface{}D)implementsinterfaceMy{}
19.如果子类中的方法mymethod()覆盖了父类中的方法mymethod(),假设父类方法头部定义如下:
voidmymethod(inta),则子类方法的定义不合法的是:
(C)
A)publicvoidmymethod(inta)B)protectedvoidmymethod(inta)
C)privatevoidmymethod(inta)D)voidmymethod(inta)
二、填空题
1.如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这个变量________了父类的同名变量。
(隐藏)
2.属性的隐藏是指子类重新定义从父类继承来的__________。
(同名变量或属性)
3.如果子类中的某个方法的名字、返回值类型和________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。
(参数列表)
4.Java仅支持类间的____重继承。
(单重)
5.抽象方法只有方法头,没有________。
(方法体)
6.Java语言的接口是特殊的类,其中包含______常量和_______方法。
(static(静态);abstract(抽象))
7.接口中所有属性均为_________、_________和________的。
(public、static、final)
8.如果接口中定义了一个方法methodA(),一个属性attA,那么一个类ClassA要实现这个接口的话,就必须实现其中的_______方法。
(methodA())
9.一个类如果实现一个接口,那么它就必须实现接口中定义的所有方法,否则该类就必须定义成________的。
(抽象的)
10.如果子类中的某个方法的名字、__________和参数列表与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。
(返回值类型)
11.Java仅支持类间的单重继承,接口可以弥补这个缺陷,支持_____重继承(多重)
12.在方法头用abstract修饰符进行修饰的方法叫做________方法。
(抽象)
13.Java语言中用于表示类间继承的关键字是___________。
(extends)
14.接口中所有方法均为________和________的。
(public、abstract)
15.Java语言中,表示一个类不能再被继承的关键字是________。
(final)
16.Java语言中,表示一个类A继承自父类B,并实现接口C的语句是_________________。
(classAextendsBimplementsC)。
17.如果子类中的方法compute()覆盖了父类中的方法compute(),假设父类的compute()方法头部有可见性修饰符public,则methodS()的可见性修饰符必须是__________。
(public)
三、程序阅读题
1.现有类说明如下,请回答问题:
publicclassA
{
Stringstr1="Hello!
\t";
Stringstr2="Howareyou?
";
publicStringtoString()
{returnstr1+str2;}
}
publicclassBextendsA
{
Stringstr1="\b\b,Bill.";
publicStringtoString()
{returnsuper.str1+str1;}
}
问题:
1)类A和类B是什么关系?
(继承关系)
2)类A和类B都定义了str1属性和方法toString(),这种现象分别称为什么?
(属性的隐藏;方法的覆盖)
3)若a是类A的对象,则a.toString()的返回值是什么?
(Hello!
Howareyou?
)
4)若b是类B的对象,则b.toString()的返回值是什么?
(Hello,Bill.)
2.现有一个类定义如下,请回答问题:
classEmployee
{
Stringname;
intage;
doublewage;
staticintNo=0;
Employee(Stringa1,inta2,doublea3)
{
name=a1;age=a2;wage=a3;
No++;
}
}
在使用该类时,已使用下面语句生成了该类的对象:
Employeee1,e2;
e1=newEmployee("王劲",26,6300);
e2=newEmployee("张山",30,3800);
问题:
的值各是什么?
(张山;30;3800.0)
2)生成对象e1、e2后,值为多少?
能否通过类名做前缀引用属性No?
(2;能)
3.阅读程序,回答问题。
publicclassInheritTest1
{
publicstaticvoidmain(String[]args)
{
Aaa;Bbb;
aa=newA();bb=newB();
aa.show();bb.show();
}
}
classA
{
inta=1;
doubled=2.0;
voidshow()
{}
}
classBextendsA
{
floata=;
Stringd="Javaprogram.";
intb=4;
voidshow()
{
super.show();
}
}
问题:
1)这是哪一类java程序?
(java应用程序)
2)类A和类B是什么关系?
(类B是类A的子类)
3)按程序输出的格式写出程序运行后的结果.
(程序运行结果如下:
d=Javaprogram.b=4)
4.现有类说明如下,请回答问题:
classA
{
intx=10;
intgetA(){returnx;}
}
classBextendsA
{
intx=100;
intgetB(){returnx;}
}
问题:
1)类B是否能继承类A的属性x?
(能)
2)若b是类B的对象,则b.getB()的返回值是什么?
(100)
3)若b是类B的对象,则b.getA()的返回值是什么?
(10)
4)类A和类B都定义了x属性,这种现象称为什么?
(属性的隐藏)
5.有如下源程序,请回答问题:
classA
{Strings="classA";}
classBextendsA
{Strings="classB";}
publicclassTypeConvert
{
publicstaticvoidmain(Stringargs[])
{
Bb1,b2=newB();
Aa1,a2;
a1=(A)b2;
a2=b2;
b1=(B)a1;
}
}
问题:
该程序的四行输出各是什么?
(classA
classA
classB
classB)
6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 试题答案