java工程师基础笔试题(一)-参考答案
一.选择和填空 (不定项哦!)
1,如下是一份文件名为Test2.java的源文件,请问,编译该文件之后会生成几份字节码文件
class Test{
class Inner{}
static class hh{}
}
class Test1{
interface IInterface{}
}
enum Gender{
}
A 1 B 3 C 5 D 6
解析: D,一个java文件中的每个类\接口\枚举都会编译成class文件,如果class前加了public修饰,那么必须与文件名相同
2,下列代码C.java
public class Hello{
/**
* 只是一个测试类
* /**
* 您好,java
* **/
* // 请仔细找茬喔,亲!
**/
static public void main(String[] a){
System.out.println('您好,java');
}
}
请标出上面代码错误的地方________________
解析:
/**
错误1. 如果有public修饰类名应与文件名一致
错误2. 应该 public static void
错误3. 参数 应该为 args
错误4. 打印输出的字符串 应该用双引号
*/
3,下列哪些是java的关键字
A、default //java中的权限修饰符
B、loop //
C、do // do while结构
D、Class // 只是一个类名称
E、null //空值
F、java //
G、String //只是一个类名称
H、false // 布尔值
解析: A、C、E、H
4,下列哪些代码符合java规范(编译不会报错):
A、public static void main(){}
B、public void method(){
private Integer num; //局部变量不能添加权限修饰符
}
C、public Method(){
int num; // 未初始化不能使用
System.out.println(num);
}
D、private $5person=5; //没有指定变量类型
E、public int 5i = 100; //变量名称不能以数字开头
解析: A
5,下列哪些变量的声明是正确的?
A、byte i=128; //-128~127
B、int i = 0220; // 相当于 144
C、boolean flag = Boolean.TRUE; //正确
D、int number = 'A'; // ascii 码 65
E、float y = 0x123; // java中默认的是10进制数据,在数字前加0可以表示8进制的,加0x则可以表示16进制的
F、long a = 0x123l; // java中默认的是10进制数据,在数字前加0可以表示8进制的,加0x则可以表示16进制的
解析:C
6,下列代码运行结果是:
public static void main(String[] args){
boolean flag=false;
int i=0;
if(flag||i>100){
System.out.println("step1");
}else if(!!flag && i/0>8){
System.out.println("step2");
}else{
System.out.println("step3");
}
}
A、运行时报错
B、打印step1
C、打印step2
D、打印step3
E、编译时报错
解析: D
7,下面代码的运行结果是:
public static void main(String[] args){
int i=1;
int j=++i;
if(j++>3){
++j;
}else{
i++;
}
int k=++j>4?j++:i++;
System.out.println(i);
}
A、2
B、3
C、4
D、运行时报错
解析: C
8、下面的程序执行结果是:
public static void main(String[] args) {
int i = 0;
for (i++; i++ < 10; i++);
System.out.println(++i);
}
A、输出0
B、输出13
C、输出1
D、输出12
解析: B
9,下面的程序输出
public static void main(String[] args){
for(int i=0;i<3;i++){
switch(i){
case 1:
System.out.println("a");
break;
case 0:
System.out.println("b");
break;
default:
System.out.println("c");
case 2:
System.out.println("d");
}
}
}
请写出执行的结果______________
解析:b a d
10,下面哪些方法是void show(int a,char b,boolean c){}方法的重载?
A、void show(char b, int a, boolean c){} //是
B、int show(boolean a,char c ,int b){} //是
C、void show(int a,char b,double c){} //是
D、void show(int x,char y,boolean z){} //不是 参数类型 一样
E、int show(int x,double y){} // 是
F、int show(int x, char y,boolean z){} //不 是
解析: A B C E 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
11,下面哪个声明数组的方式是正确的?
A、int i[]=null;
B、int[] j=new Integer[](); //编译报错
C、int[] k=new int[]{1,2,3};
D、int[] L={1,2,3};
E、int[] m={};
F、String[] s=new String[]{"1",'2',"3"}; //不能放 '2' 类型的数据
G、String[] s=new String[3];
H、class A{}
public class B{
private A[] ={new A(),new A(),new A()}; // 却少变量名称 private A[] arr ={new A(),new A(),new A()};
}
I、class A{}
public class B{
private A[] =new A[]{new A(),new A(),new A()}; //缺少变量名称
}
12,下面哪一项说法是正确的?
A.在一个子类中一个方法不是public的就不能被重载 //错误
B.覆盖一个方法只需要满足相同的方法名和参数类型就可以了 //对
C.覆盖一个方法必须需要相同的方法名参数和返回类型 //错
D.一个覆盖的方法必须有相同的方法名、参数名和参数类型 //错
13,下面代码的输出结果是多少?___________
class A {
public static void prt() {
System.out.println("1");
}
public A() {
System.out.println("A");
}
}
public class B extends A {
public static void prt() {
System.out.println("2");
}
public B() {
System.out.println("B");
}
public static void main(String[] args) {
A a = new B();
a = new A();
}
}
解析: A B A
14,下面代码的输出结果是多少?__________
class Parent {
protected String value = "123";
public String getValue() {
return value;
}
}
public class Child extends Parent {
protected String value = "456";
public static void main(String[] args){
Child c=new Child();
System.out.println(c.getValue());
}
}
解析:123
15,表达式(0 > 0 || 0/0 == 0)结果为_____________;
解析: Exception in thread "main" java.lang.ArithmeticException: / by zero
二,主观题
1,请简要写出搭建java开发环境的步骤和java跨平台原理。
2,int和Integer都可以代表一个整数,这两者在使用上有什么区别吗?为什么JDK中要设计两个数据类型来表示同一种数据?
3,谈谈你对面向对象特征的理解并举例说明。
4,谈谈你对抽象类和接口的理解。
5,请说说方法覆写和方法重载的区别
6,面向对象的基本特征,并简单述之
7,多态的作用