java易错笔试题含答案一

本文主要探讨了Java编程中的基础概念和技术,包括字符串处理、集合类型、线程同步、包管理、JDBC驱动加载、字符串对象比较、JSP内置对象、内存管理和错误处理等方面。通过实例代码解析了各种操作的正确性和注意事项,帮助读者深入理解Java编程的核心知识点。
摘要由CSDN通过智能技术生成

1、以下代码将打印出

 public static void main (String[] args) { 
    String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class";
    System.out.println(classFile);
}

正确答案: C
com. jd
com/jd/MyClass.class
///MyClass.class
com.jd.MyClass

选C
由于replaceAll方法的第一个参数是一个正则表达式,而".“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/“。如果想替换的只是”.“,那么久要写成”\.".

2、以下哪几个是java中的集合类型?
正确答案: A B D
Vector
Set
String
List

String为引用数据类型

3、下列哪些操作会使线程释放锁资源?
正确答案: B C
sleep()
wait()
join()
yield()

1.sleep会使当前线程睡眠指定时间,不释放锁
2.yield会使当前线程重回到可执行状态,等待cpu的调度,不释放锁
3.wait会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify,notifyAll唤醒时进入可执行状态
4.当前线程调用 某线程.join()时会使当前线程等待某线程执行完毕再结束,底层调用了wait,释放锁

4、下列关于包(package)的描述,正确的是()

正确答案: D
包(package)是Java中描述操作系统对多个源代码文件组织的一种方式。
import语句将所对应的Java源文件拷贝到此处执行。
包(package)是Eclipse组织Java项目特有的一种方式。
定义在同一个包(package)内的类可以不经过import而直接相互使用。

1、为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,java是跨平台的,所以java中的包和操作系统没有任何关系,java的包是用来组织文件的一种虚拟文件系统。A错
2、import语句并没有将对应的java源文件拷贝到此处仅仅是引入,告诉编译器有使用外部文件,编译的时候要去读取这个外部文件。B错
3、Java提供的包机制与IDE没有关系。C错 4、定义在同一个包(package)内的类可以不经过import而直接相互使用。

5、下面哪一项不是加载驱动程序的方法?
正确答案: A
通过DriverManager.getConnection方法加载
调用方法 Class.forName
通过添加系统的jdbc.drivers属性
通过registerDriver方法注册

答案:A DriverManager.getConnection方法返回一个Connection对象,这是加载驱动之后才能进行的

6、
java中 String str = "hello world"下列语句错误的是?
正确答案: A B C
str+=’ a’
int strlen = str.length
str=100
str=str+100

A. ‘a’是字符,’ a’这个是空格和a,必须要用" a"才可以;
B.String有length()方法
C.int 无法直接转成String类型
D.尾部添加字符串”100“

7、以下程序执行的结果是:

class X{
    Y y=new Y();
    public X(){
        System.out.print("X");
    }
}
class Y{
    public Y(){
        System.out.print("Y");
    }
}
public class Z extends X{
    Y y=new Y();
    public Z(){
        System.out.print("Z");
    }
    public static void main(String[] args) {
        new Z();
    }
}

正确答案: C 你的答案: C (正确)
ZYXX
ZYXY
YXYZ
XYZX

答案C 初始化过程

  1. 初始化父类中的静态成员变量和静态代码块 ;
  2. 初始化子类中的静态成员变量和静态代码块 ;
    3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
    4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;
    (1)初始化父类的普通成员变量和代码块,执行 Y y=new Y(); 输出Y (2)再执行父类的构造方法;输出X (3) 初始化子类的普通成员变量和代码块,执行 Y y=new Y(); 输出Y
    (4)再执行子类的构造方法;输出Z 所以输出YXYZ**

8、下面有关JSP内置对象的描述,说法错误的是?
正确答案: C
session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止

request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应

application对象:多个application对象实现了用户间数据的共享,可存放全局变量

response对象:response对象包含了响应客户请求的有关信息

application服务器就创建了一个,C选项后面错误了,不是多个

9、Which statement declares a variable a which is suitable for referring to an array of 50 string objects?
下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量?
正确答案: B C F
char a[][];
String a[];
String[] a;
Object a[50];
String a[50];
Object a[];

BCF 在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。
如下,1,2,3可以通过编译,4,5不行。而String是Object的子类,所以上述BCF均可定义一个存放50个String类型对象的数组。

  1. String a[]=new String[50];
  2. String b[];
  3. char c[];
  4. String d[50];
  5. char e[50];

10、Which lines of the following will produce an error?

byte a1 = 2, a2 = 4, a3;
short s = 16;
a2 = s;
a3 = a1 * a2;

正确答案: A
Line 3 and Line 4
Line 1 only
Line 3 only
Line 4 only

答案:A short类型转为byte类型出错
a1*a2结果为int类型,转为byte类型出错

11、有如下一段代码,请选择其运行结果()

public class StringDemo{
  private static final String MESSAGE="taobao";
  public static void main(String [] args) {
    String a ="tao"+"bao";
    String b="tao";
    String c="bao";
    System.out.println(a==MESSAGE);
    System.out.println((b+c)==MESSAGE);
  }
}

正确答案: C
true true
false false
true false
false true

答案:C 要注意两个问题: 1,字符串在java中存储在字符串常量区中
2,判断的是对象引用是否是同一个引用,判断字符串相等要用equals方法 首先判断aMESSAGE
同一份字符串常量在内存中只有一份,因此是同一地址,返回true 再次比较(b+c)==MESSAGE 这相当于 new
String(b+c)==MESSAGE 这里new了一个String对象,所以返回false

12、下面关于面向对象的一些理解哪些是错误的( )
正确答案: C
面向对象的最重要的特性是支持继承、封装和多态

系统设计应该遵循开闭原则,系统应该稳定不可修改,但应支持通过继承、组合等方式进行扩展

函数式的语言必然是面向对象的语言

面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口
过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装

Java和C++都是静态类型的面向对象编程语言

13、在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。( )

正确答案: B
正确
错误

方法调用时,会创建栈帧在栈中,调用完是程序自动出栈释放,而不是gc释放

14、以下语句返回值为 true 的是()
在这里插入图片描述

正确答案: A B

选A,B. Integer a1 = 17; 语句执行的是valueOf()方法 public static Integer
valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.***[i + (-IntegerCache.low)]; return new
Integer(i); } 对于-128到127之间的数, Integer直接从数组中取, 故a1, a2指向的是同一个对象, A正确.
其余都是new出来的对象, 显然地址都不相同. int类型与Integer类型比较时, 先将Integer拆箱, 再比较值, 故B正确.

15、下面的Java赋值语句哪些是有错误的 ()
正确答案: B F
int i =1000;
float f = 45.0;
char s = ‘\u0639’;
Object o = ‘f’;
String s = “hello,world\0”;
Double d = 100;

b:小数如果不加 f 后缀,默认是double类型。double转成float向下转换,意味着精度丢失,所以要进行强制类型转换。
c:是使用unicode表示的字符。 d:‘f’ 字符会自动装箱成包装类,就可以向上转型成Object了。
f:整数默认是int类型,int类型不能转型为Double,最多通过自动装箱变为Integer但是Integer与Double没有继承关系,也没法进行转型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值