JavaSE考试题

  1. 下列标识符哪个是合法的()
    A. class
    B.$abc
    C.1234
    D.user-name

B
标识符:可以由字母、数字、下划线、$组成

可以用其开头:$、下划线、字母
不可以用其开头:关键字、数字,空格

  1. 设x=1 ,y=2,z=3,则表达式y+=z- -/++x的值是(C)
    A. 4
    B. 2
    C. 3
    D. 5

C
y=y+((z- - ) / (++x) )
first:z- -先赋值为3,再减1,所以最后值为3
second: ++x 先加1,再赋值,最后值为2
third:(z–) / (++x) 为 3 / 2 == 1
fouth y = y + 1 = 2+ 1 = 3

  1. 以jdk8.0为标准,switch语句块中,不支持的变量类型有哪些(C)
    A. 字符串
    B. int
    C. long
    D. char

在JDK1.5之前,switch循环只支持byte short char int四种数据类型.JDK1.5 在switch循环中增加了枚举类与byte short char int的包装类,对四个包装类的支持是因为java编译器在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的数值.
jdk1.7开始支持String类型,但实际上String类型有一个hashCode算法,结果也是int类型.而byte short char类型可以在不损失精度的情况下向上转型成int类型.所以总的来说,可以认为switch中只支持int.

  1. 请说出下面题的运行结果(B)
    public static void main(String[] args){
    Integer f1= 100,f2 = 100,f3 = 150,f4 = 150;
    System.out.println(f1 ==f2 );
    System.out.println(f3 = = f4);
    }
    A. 编译异常
    B. true,false
    C. false,true
    D. false,false

如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1= =f2的结果是true,而f3==f4的结果是false

  1. 已知有下列Test类的说明,在该类的main方法内,则下列哪个语句是正确的?(B)
    public class Test
    {
    private float f = 1.0f;
    int m = 12;
    static int n = 1 ;
    public static void main(String args[]){
    Test t = new Test();
    }
    }
    A. this.n;
    B. t.f;
    C. Test.m
    D. Test.f

this是指向对象的引用,不能在静态方法中使用this,因为对象需要实例化。

  1. 下列选项中关于java中this关键字的说法错误的有(C)
    A. this关键字是一个对象的引用
    B. this 可用于构造函数中,调用类本身重载的构造函数,但是必须写在首行
    C. this可用于静态方法中
    D. this指针当对象创建后指向该对象

this关键字是在对象内部指代对象自身的引用
this不能在静态函数中使用
this跟对象关联,它是对象本身的引用。
this于特定的对象关联,一个对象对于一个this,不能共用。

  1. 关于Java语言的内存回收机制,下列选项中最正确的一项是?(C)
    A. Java程序要求用户必须手工创建一个线程来释放内存
    B. Java程序允许用户使用指针来释放内存
    C. 内存回收线程负责释放无用内存
    D. 内存回收线程不能释放内存对象

C
A,java的内存回收是自动的,Gc在后台运行,不需要用户手动操作
B,java中不允许使用指针
D,内存回收线程可以释放无用的对象内存

  1. 以下修饰组合合法的是(D)
    A. final abstra
    B. private abstract
    C. static abstract
    D. proteced abstract
    bstract 一定不能和 private, static, final 同时使用.

1、抽象方法:只有方法头,没有方法体定义,也就是说抽象方法无需实现,抽象方法的意义在于子类实现,private意义在于其他类直接调用它已实现的方法。这两者搭配毫无意义(private修饰后为私有,子类不能继承,自然不能使用)
2、final用于类名前,表示类不可被继承;final用于变量前,表示它是只能一次赋值的变量,如果初始化了那就是常量,也不可被改变。和abstract 搭配无意义(final不能被重写,根本就不可能被abstract的实现类重写)
3、static修饰的是静态方法,可以直接被类调用;而abstract修饰的类中只有方法名,无方法体,不能被直接调用,故不能同时修饰一个类或方法

  1. 下列关于ArrayList和LinkedList集合的说法不正确的有(D)
    A. ArrayList集合底层是数组实现,该集合线程不安全
    B. LinkedList集合底层是链表结构,适合做元素的增删操作
    C. 这两个集合都是List接口的实现类
    D. 这两个集合都是Collection类的子类

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据

  1. 下列哪个流属于面向字符输入流(B)
    A. BufferedWriter
    B. InputStreamReader
    C. ObjectInputStream
    D. FileInputStream
  2. 一个Java源文件中可以定义多个类,但是至多只能有一个public类。(A)
    A. 正确
    B. 错误

java程序是从一个public类的main函数开始执行的,就像C程序是从main()函数开始执行一样。只能有一个public是为了给类装载器提供方便。 一个public只能定义在以它的类名为文件名的文件中。

每个编译单元都只有一个public类。因为每个编译单元都只能有一个公共接口,用public来表现。该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public,编译器就会报错。并且public类的名称必须与文件名相同(严格区分大小写)。当然一个编译单元内也可以没有public类。

  1. 在多重循环中,外层循环变量变化一遍,内层循环变量要变化一次。(B)
    A. 正确
    B. 错误

在二重循环中,外层循环变量变化一次,内层循环变量要从初始值到结束值变化一遍

  1. 进程是线程Thread内部的一个执行单元,它是程序中一个单一顺序控制流程。(B)
    A. 正确
    B. 错误

线程是进程的一个执行单位,进程包含线程
Thread类实现了Runnable接口。

  1. 一个File对象可以代表一个文件或目录,它可以获取文件和目录属性,也可以访问文件内容。(A)
    A. 正确
    B. 错误
  2. 增强的for循环可以遍历数组和集合,语法简单 不需要知道数组的长度,不能实现与下标相关的操作。(A)
    A. 正确
    B. 错误
  3. 内部类作为外部类成员,权限修饰符和其他成员一样,可声明为private、默认、protected或public。(B)
    A. 正确
    B. 错误

广泛意义上的内部类一般包括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。
内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。
局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。

  1. 赋值运算优先级别低于条件运算符,条件运算符优先级别低于算术运算符。(A)
    A. 正确
    B. 错误

算术运算符 > 关系运算符 > 条件运算符>赋值运算符

  1. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。(B)
    A. 正确
    B. 错误

当父类转为子类时,这个时候已经是子类自己了,当然可以访问子类自己的方法

  1. LinkedHashMap是一种有序的HashMap,查询速度快,便于进行增加删除操作。(A)
    A. 正确
    B. 错误
  2. 程序调用自身的编程技巧称为递归。递归的特点是编程简单并且节省内存。(B)
    A. 正确
    B. 错误

递归既花时间又耗内存,在要求高性能的情况下尽量避免使用递归。

  1. Math.round(11.5)等于多少(),
    Math.round(-11.5)等于多少()。
    ①:12
    ②:-11
  2. 若a、b为int型变量,并且已分别赋值为5和10,则表达式(a++)+(++b)+a*b的值为()。
    ①82

先运行(a++),再运行(++b),最后运行ab
a++的结果是5,但运行完之后,a就等于6了
++b的结果是11,运行完之后,b就等于11
a
b即是611
所以结果是5+11+6
11 = 82

  1. 表达式“ b" + 10 的值是 (),
    ‘ b’ + 10 的值是()。
    ①:b10
    ②:108
  2. Java中,抛出自定义异常使用的关键字是()语句,在方法上抛出异常使用()语句。
    ①:throw
    ②:throws
  3. 下面java代码的输出结果是()
    String s = ” 千山万水“;
    for(int i = 0 ; i < 2 ;i++){
    s= s.substring(1) + s.substring(0,1);
    }
    ①:万水千山

int i = 0 , s.substring(1) 是山万水 ,s.substring(0,1)是千
此时s= 山万水千
然后 int i = 1,s.substring(1) 是万水千 ,s.substring(0,1)是山
所以最后答案是万水千山

  1. 在Java中,用()修饰的变量叫静态变量,推荐通过()的方式来访问。
    ①:static
    ②:类名
  2. short s1 = 1;s1 = s1 + 1;有错吗? 有什么错? 为什么?

s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的s

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值