java笔试题含答案总结四

1、下列哪一行代码可以加到下面代码中的第4行而不产生错误?()

1  public abstract class AbClass {
2     public int var = 1;
3     public void fun() { }
4                                   
5  } 

正确答案: D
var=var+5;

public void fun2();

public abstract void fun3() {}

public abstract void fun4(int var2);

本题的类是一个抽象类,对于抽象类要注意抽象类不能被实例化; 对于A,抽象类中定义的变量初始化之后就不能重新操作赋值或者操作该变量;
对于B,抽象类中的普通方法一定要实现,B中只是单纯定义了一个方法,并未实现; 对于C,抽象类中的抽象方法是不能实现的; 综上D满足要求。

2、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

答案:short s1 = 1; s1 = s1 + 1; 有错(s1+1运算结果是int型,需要强制转换类型)

short s1 = 1; s1 += 1;(没有错,s1==2)

3、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

abstract需要重载,static为类方法,没有重载一说 abstract为没有实现的方法,native为本机实现的方法,自相矛盾
abstract方法没有实现,也不可能实际调用抽象方法,没有必要synchronized修饰,当然子类可以根据需要同步该方法.所以 都不能.

4、启动一个线程是用run()还是start()?

通过start ()方法来启动的新线程,处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行相应线程的run()方法,这里方法run ()称为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程随即终止。

5、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

答案:是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法

中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用

是永远不会改变的。

6、正确的是()
A、环境变量可在编译 source code 时指定
B、在编译程序时,所指定的环境变置不包括 class path
C、javac —次可同时编译数个 Java 源文件
D、javac.exe 能指定编译结果要置于哪个目录

答案:CD

java_home 无法再编译时指定,最多在命令行,让操作系统直接找到可执行程序 编译程序时,环境变量包括 java_home 和
class path javac.exe -d 参数可指定生成类文件的位置

7、正确的是()
A、call by value 不会改变实际参数的数值
B、call by reference 能改变实际参数的参考地址
C、call by reference 不能改变实际参数的参考地址
D、call by reference 能改变实际参数的内容

答案:ACD

首先了解下 Java 中参数的传递有两种

call by value:传递的是具体的值,基础数据类型就是这种类型 call by
reference:传递的是对象的引用,即对象的存储地址 call by value 不能改变实参的数值 call by reference
不能改变实参的参考地址,但可以访问和改变地址中的内容

8、声明合法的是()
A、long l = 1234
B、int i = 1234L
C、float f = 12.34
D、double d = 12.34

参考答案答案:AD

int 类型申明不需要在值后面加字母,如 int = 4 float 类型申明需要在值后面加字母 f 或 F,如 float f =
12.34f

9、下面打印结果是?

int i = 5;
switch (i) {
default:
    System.out.println("default");
case 0:
    System.out.println(0);
    break;
case 1:
    System.out.println(1);
    break;
case 2:
    System.out.println(2);
    break;
}

参考答案 default 0

default 语句块没有使用 break,穿透到 case 0

10、下面两段代码的区别是?
short s1 = 1; s1 = s1 + 1;
short s1 = 1; s1 += 1;

参考答案 第一段编译报错,s1 + 1自动升级为 int 型,int 型赋值给 s1,需要手动强转

第二段隐含类型强转,不会报错

11、abstract方法是否可是static的?native的?synchronized的?

参考答案 都不能

抽象方法需要子类重写,而静态的方法是无法被重写的 本地方法是由本地动态库实现的方法,而抽象方法是没有实现的
抽象方法没有方法体;synchronized 方法,需要有具体的方法体,相互矛盾

12、打印结果是什么

public class TestConstructorPrint {

    public static void main(String[] args) {
        Parent parent = new Child();
        parent = new Child();
    }

}

class Parent {
    static {
        System.out.print("1");
    }

    public Parent() {
        System.out.print("2");
    }
}

class Child extends Parent {
    static {
        System.out.print("3");
    }

    public Child() {
        System.out.print("4");
    }
}

参考答案 打印:132424

创建对象时构造器的调用顺序

递归初始化父类静态成员和静态代码块,上层优先 初始化本类静态成员和静态代码块 递归父类构造器,上层优先 调用自身构造器

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值