JAVA开发面试题&基础篇&第八部分
- 1.下面那些声明是合法的?()
- 2.以下选项中选择正确的java表达式()
- 3.下面哪个函数是public void example(){....}的重载函数?()
- 4.打印结果:
- 5.解释继承、重载、覆盖。
- 6.什么是编译型语言,什么是解释型语言?java可以归类到那种?
- 7.try{}里面有一个return语句,那么紧跟在这个try后的finally, 里面的语句在异常出现后,都会执行么?为什么?
- 8.有一段java应用程序,它的主类名是al,那么保存它的源文件可以是?
- 9.Java类可以作为()
- 10.在调用方法时,若要使方法改变实参的值,可以?()
- 11.Java语言具有许多优点和特点,哪个反映了java程序并行机制的()
- 12.下关于构造函数的描述错误是()
- 13.若需要定义一个类域或类方法,应使用哪种修饰符?()
- 14.下面代码执行后的输出是什么()
- 15.下面哪几个函数是public void example(){….}的重载函数()
- 16.请问以下代码执行会打印出什么?
- 17.如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?
- 18.一个类的构造方法是否可以被重载(overloading),是否可以被子类重写(overrding)?
- 19.Java中byte表示的数值范围是什么?
- 20.如何将日期类型格式化为:2013-02-18 10:53:10?
1.下面那些声明是合法的?()
选项 | 内容 |
A | long l = 4990 |
B | int i = 4L |
C | float f = 1.1 |
D | double d = 34.4 |
答案:AD
分析:B int属于整数型应该是int=4 C应该是float f=1.1f
2.以下选项中选择正确的java表达式()
选项 | 内容 |
A | int k=new String(“aa”) |
B | String str = String(“bb”) |
C | char c=74 |
D | long j=8888 |
答案:CD
分析:A需要强制类型转换 B String str =new String(“bb”)
3.下面哪个函数是public void example(){…}的重载函数?()
选项 | 内容 |
A | private void example(int m){…} |
B | public int example(){…} |
C | public void example2(){…} |
D | public int example(int m.float f){…} |
答案:AD。分析:BC定义的是新函数
4.打印结果:
package com.zsk;
public class smaillT{
public static void main(String args[]){
smaillT t=new smaillT();
int b = t.get();
System.out.println(b);
}
public int get(){
try {
return 1;
}finally{
return 2;
}
}
}
输出结果:2
5.解释继承、重载、覆盖。
继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
那么如何使用继承呢?用extends关键字来继承父类。
如上面A类与B类,当写继承语句时, class A类 extends B类{ } 其中A类是子类,B类是父类。
名称 | 英文 | 位置不同 | 作用不同 |
重载 | overload | 同一个类中 | 在一个类里面为一种行为提供多种实现方式并提高可读性现方式并提高可读性 |
重写 | override | 子类和父类间 | 父类方法无法满足子类的要求,子类通过方法重写满足要求 |
6.什么是编译型语言,什么是解释型语言?java可以归类到那种?
计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种,一个是编译,一个是解释。
用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统把高级语言翻译成机器语言,把源高级程序编译成为机器语言文件,比如windows下的exe文件。以后就可以直接运行而不需要编译了,因为翻译只做了一次,运行时不需要翻译,所以一般而言,编译型语言的程序执行效率高。
解释型语言在运行的时候才翻译,比如VB语言,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行时才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
JAVA语言是一种编译型-解释型语言,同时具备编译特性和解释特性(其实,确切的说java就是解释型语言,其所谓的编译过程只是将.java文件编程成平台无关的字节码.class文件,并不是向C一样编译成可执行的机器语言,在此请读者注意Java中所谓的“编译”和传统的“编译”的区别)。作为编译型语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又称为类文件。java类文件不能再计算机上直接执行,它需要被java虚拟机翻译成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。java字节码文件首先被加载到计算机内存中,然后读出一条指令,翻译一条指令,执行一条指令,该过程被称为java语言的解释执行,是由java虚拟机完成的。
7.try{}里面有一个return语句,那么紧跟在这个try后的finally, 里面的语句在异常出现后,都会执行么?为什么?
在异常处理时提供 finally 块来执行任何清除操作。
如果有finally的话,则不管是否发生异常,finally语句都会被执行,包括遇到return语句。
finally中语句不执行的唯一情况中执行了System.exit(0)语句。
8.有一段java应用程序,它的主类名是al,那么保存它的源文件可以是?
答案:al.java
分析:.class是java的解析文件
9.Java类可以作为()
选项 | 内容 |
A | 类型定义机制 |
B | 数据封装机制 |
C | 类型定义机制和数据封装机制 |
D | 上述都不对 |
答案:C
10.在调用方法时,若要使方法改变实参的值,可以?()
选项 | 内容 |
A | 用基本数据类型作为参数 |
B | 用对象作为参数 |
C | A和B都对 |
D | A和B都不对 |
答案:B.分析:基本数据类型不能改变实参的值
11.Java语言具有许多优点和特点,哪个反映了java程序并行机制的()
选项 | 内容 |
A | 安全性 |
B | 多线程 |
C | 跨平台 |
D | 可移植 |
答案:B多线程
12.下关于构造函数的描述错误是()
选项 | 内容 |
A | 构造函数的返回类型只能是void型 |
B | 构造函数是类的一种特殊函数,它的方法名必须与类名相同 |
C | 构造函数的主要作用是完成对类的对象的初始化工作 |
D | 一般在创建新对象时,系统会自动调用构造函数 |
答案:A
分析:构造函数的名字与类的名字相同,并且不能指定返回类型。
详细特点见下:
1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;
5.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)
6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
7.在Python中构造函数必须通过重写__init__方法实现
13.若需要定义一个类域或类方法,应使用哪种修饰符?()
选项 | 内容 |
A | static |
B | package |
C | private |
D | public |
答案:A
14.下面代码执行后的输出是什么()
package com.bjsxt;
public class Test {
public static void main(String[] args) {
outer: for (int i = 0; i < 3; i++)
inner: for (int j = 0; j < 2; j++) {
if (j == 1)
continue outer;
System.out.println(j + " and " + i);
}
}
}
选项 | 内容 |
A | 0 and 0 . 0 and 1 . 0 and 2 |
B | 1 and 0 . 1 and 1 . 1 and 2 |
C | 2 and 0 . 2 and 1 . 2 and 2 |
答案:A
15.下面哪几个函数是public void example(){….}的重载函数()
选项 | 内容 |
A | public void example(int m){…} |
B | public int example(int m){…} |
C | public void example2(){…} |
C | public int example(int m,float f){…} |
答案:ABD
16.请问以下代码执行会打印出什么?
父类:
package com.bjsxt;
public class FatherClass {
public FatherClass() {
System.out.println("FatherClassCreate");
}
}
子类:
package com.bjsxt;
import com.bjsxt.FatherClass;
public class ChildClass extends FatherClass {
public ChildClass() {
System.out.println("ChildClass Create");
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:?
答:
FatherClassCreate
FatherClassCreate
ChildClass Create
17.如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?
答:因为类A、B不是接口,所以是不可以直接实现的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。假如A为B的父类,B为C的父类,此时C就能使用A、B的功能。
18.一个类的构造方法是否可以被重载(overloading),是否可以被子类重写(overrding)?
答:构造方法可以被重载,但是构造方法不能被重写,子类也不能继承到父类的构造方法
19.Java中byte表示的数值范围是什么?
答:范围是-128至127
20.如何将日期类型格式化为:2013-02-18 10:53:10?
public class TestDateFormat2 {
public static void main(String[] args) throws Exception {
//第一步:将字符串(2013-02-18 10:53:10)转换成日期Date
DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String sdate="2013-02-18 10:53:10";
Date date=sdf.parse(sdate);
System.out.println(date);
//第二步:将日期Date转换成字符串String
DateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String sdate2=sdf2.format(date);
System.out.println(sdate2);
}
}
点击前往下一篇: JAVA开发面试题&基础篇&第九部分.