Java笔试题(一)单选题

1、下列哪一种叙述是正确的

A. abstract修饰符可修饰字段、方法和类

B. 抽象方法的body部分必须用一对大括号{ }包住

C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号

答案:D

abstract(抽象)修饰符,可以修饰类和方法
abstract修饰符在修饰类时必须放在类名前。
public abstract void method();

2、如下代码,输出结果是什么?

public class Test {
	public int aMethod() {
		static int i = 0;
		i++;
		return i;
	}
	public static void main (String args[]) {
		Test test = new Test();
		test.aMethod();
		int j = test.aMethod();
		System.out.println(j);
	}
}

A. 0
B. 1
C. 2
D. 编译失败

答案:D

static int i = 0;
static是成员变量及方法的修饰符,是属于类本身的数据字段,
在加载类时就已经初始化,为内存中保存。
在方法体内声明的只是局部临时变量,当方法体结束后,这些临时变量会自动销毁,释放缓存空间。
所以static为什么不能定义在方法里

3、下列哪种说法是正确的

A. 实例方法可直接调用超类的实例方法
B. 实例方法可直接调用超类的类方法
C. 实例方法可直接调用其他类的实例方法
D. 实例方法可直接调用本类的类方法

答案:D

类方法

也可以称为静态方法,使用static修饰的类中方法;
属于整个类的,不是属于某个实例的,只能处理static域或者调用static方法;
不能访问实例变量,只能访问类变量,类方法由类名或者实例对象调用;
类方法中不能出现this或者super关键字;

实例方法

非静态方法,没有用static修饰的方法;
属于对象的方法,由对象来调用。可以对类变量进行操作

public class Super {
	
	private void method1() {
		method2(); // 实例方法可以调用类方法
		System.out.println("这是父类的实例方法");
	}
	
	public static void method2() {
		//method1();// 类方法不可以调用实例方法
		System.out.println("这是父类的类方法");
	}

}

public class Son {
	
	public void method3() {
		//method1();// 实例方法不可以调用超类的实例方法,除非是public修饰
		//method2();// 实例方法不可以调用超类的类方法
		System.out.println("这是子类的实例方法");
	}
	
	public static void main(String[] args) {
		Son son = new Son();
		son.method3();
	}
}

4、正确的是?

class Super {
	
	public Integer getLenght() {
		return new Integer(4);
	}
}

public class Sub extends Super {
	
	public Long getLenght() {
		return new Long(5);
	}

	public static void main(String[] args) {
		Super sooper = new Super();
		Sub sub = new Sub();
		System.out.println(sooper.getLenght().toString() + "," + sub.getLenght().toString());
	}
}

A. 4,4
B. 4,5
C. 5,4
D. 5,5
E. 编译失败.---------重定时不能改变返回类型

答案:E

//子类不能定义与父类方法名一样,但是返回类型不同的方法

5、在Servlet处理请求的方式为?

A.以进程的方式
B.以程序的方式
C.以线程的方式
D.以响应的方式

答案:C

6、JDBC中,用于表示数据库连接的对象是?

A.Statement
B.Connection
C.DriverManager
D.PreparedStatement

答案:B

7、用于调用存储过程的对象是

A.ResultSet
B.DriverManager
C.CallableStatemet
D.PreparedStatement

答案:C

//创建存储过程的对象
CallableStatement c=conn.prepareCall("{call getsum(?,?)}");

8、按照MVC设计模式,JSP用于实现

A.Model
B.View
C.Controller
D.容器

答案:B

9、如下代码,当Float对象在第11行被创建后, 什么时候能够被垃圾回收?

10. public Object m() { 
11. Object o = new Float(3.14F); 
12. Object [] oa = new Object[1]; 
13. oa[0] = o; 
14. o = null; 
15. oa[0] = null; 
16. print 'return 0'; 
17. } 

A. 13行以后.
B. 14行以后.
C. 15行以后.
D. 16行以后.

答案:C

对象没有任何引用指向它的时候才会回收
o=null;//这里之后oa[0]还是持有Float对象的引用

10、如下代码,结果是什么?

class Base {
	Base() { System.out.print("Base"); }
}
public class Alpha extends Base {
	public static void main( String[] args ) {
		new Alpha(); -----调用父类无参的构造方法
		new Base();
	}
}

A. Base
B. BaseBase
C. 编译失败.
D. 代码运行但没有输出.
E. 运行时抛出异常

答案:B

11、在J2EE中属于Web层的组件有

A.Servlet
B.EJB
C.Applet
D.HTML

答案:A

12、在Servlet的生命周期中,容器只调用一次的方法是

A.service
B.getServletConfig
C.init
D.destroy

答案:C

13、以下关于异常的说法正确的是

A. 一旦出现异常,程序运行就终止了

B. 如果一个方法申明将抛出某个异常,它就必须真的抛出那个异常

C. 在catch子句中匹配异常是一种精确匹配

D. 可能抛出系统异常的方法是不需要申明异常的

答案:D

14、如下代码,输出结果是什么?

public class Foo {
	public static void main(String[] args) {
		try {
			return;
		} finally {
			System.out.println( "Finally" );
		}
	}
}

A. Finally
B.编译失败
C. 代码正常运行但没有任何输出.
D. 运行时抛出异常

答案:A

1、不管有没有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

public static void main(String[] args) {
        int k = f_test();
        System.out.println(k);
    }
     
    public static int f_test(){
        int a = 0;
        try{
            a = 1;
            return a;
        }
        finally{
            System.out.println("It is in final chunk.");
            a = 2;
            return a;
        }
    }

输出:

It is in final chunk.
2

如果将 return a; 注释掉,将输出

It is in final chunk.
1

15、jsp指令中isELIgnored="boolean"的意思是

A.决定是否实现Servler的单线程模式,

B.决定改页面是否是一个错误处理页面,

C.决定是否支持EL表示,

D.没有具体的含义。

答案:C

16、下面关于Java的引用,说法正确的是

A. 应用实际上就是指针

B. 应用本身是Primitive

C. 引用就是对象本身

D. 一个对象只能被一个引用所指引

答案:B

17、对于import java.util包,以下那种说法是错误的?

A. Vector类属于java.util包

B. Vector类放在…/java/util/目录下

C. Vector类放在java.util文件中

D. Vector类是Sun公司的产品

答案:C

18、在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?

A. 正好1000毫秒

B. 1000毫秒不到

C. =>1000毫秒

D. 不一定

答案:C

19、在WEB-INF目录下,必须存放的文件为

A.class文件

B.web.xml

B.jar文件

D.html文件

答案:B

20、下面关于垃圾收集的说法正确的是?

A. 一旦一个对象成为垃圾,就立刻被收集掉。

B. 对象空间被收集掉之后,会执行该对象的finalize方法

C. finalize方法和C++的析构函数是完全一回事情

D. 一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此。

答案:D

在准备销毁对象所占用的内存之前,会先调用finalize()这个方法,来进行内存的销毁以及回收。但是finalize()并不是C++中的析构函数,并不需要每次都将对象完全销毁,只要在JVM内存没有满的那一刻,那么内存空间就永远不会自动释放出来,除非使用finalize()的时候,所以说这个方法在Java中并不常见或者说用的时间和途径很少。

21、下面的语句会产生什么样的输出?

System.out.println(4&7);

A.4

B.5

C.6

D.7

E.0

答案:A

4的二进制:0100
7的二进制:0111
结果:0100
二进制与运算规则:1&1=1 1&0=0 0&0=0

22、下面的程序中,temp的最终值是什么?

long temp=(int)3.9;
temp%=2;

A .0

B .1

C .2

D .3

E .4

答案:B

long temp=(int)3.9; temp结果为3; 3%2 = 1;

23、下面哪个不是JAVA关键字

A integer

B double

C float

D default

答案:A

Integer是java的关键字

24、Which method is used by a Servlet to place its session ID in a URL that is written to the servlet’s response output stream?

A. The encodeURL method of the HttpServletRequest interface.

B. The encodeURL method of the HttpServletResponse interface.

C. The rewriteURL method of the HttpServletRequest interface.

D. The rewriteURL method of the HttpServletResponse interface.

答案:B

(译:那个方法是servlet用于将其session ID入在一个URL中,该URL写入servlet的响应输出流)

25、每个使用Swing构件的程序必须有一个

A.按钮

B.标签

C.菜单

D.容器

答案:D

26、下列标识符(名字)命名原则中,正确的是

A. 类名的首字母小写

B. 变量和方法名的首写字母大写

C. 接口名的首写字母小写

D. 常量完全大写

答案:D

27、类Test1定义如下:

1.public class Test1{ 
2. public float aMethod(float a,float b){ return 0;} 
3. 
4.} 

将以下哪种方法插入行3是不合法的

A、public float aMethod(float a, float b,float c){ return 0;}

B、public float aMethod(float c,float d){ return 0;}

C、public int aMethod(int a, int b){ return 0;}

D、private float aMethod(int a,int b,int c){ return 0;}

答案:B

28、哪个语句创建了一个数组实例?

A. int[] ia = new int [15];

B. float fa = new float [20];

C. char[] ca = “Some String”;

D. int ia [][] = {4, 5, 6} {1, 2, 3};

答案:A

int [][] array = new int[6][6];
int [][] array = { {1,2,3},{1,2,3},{1,2,3}};
int[] arr=new int[6];
int[] x={1,2,3,4};
int[] y= new int[]{1,2,3,4,5};

29、以public修饰的类如:public class Car{…} 则Car( )

A、可被其它程序包中的类使用

B、仅能被本程序包中的类使用

C、不能被任意其它类使用

D、不能被其它类继承

答案:A

public :公开;可以被所有其他类所访问。
private:私有;只能被自己访问和修改。
protected:保护;自身、子类及同一个包中类可以访问。

30、下列哪个属于容器型构件

A .JEdit B.JButton C.JPanel D.JTextField

答案:C

31、Java程序的执行过程中用到一套JDK工具,其中java.exe是指

A.Java文档生成器

B.Java解释器

C.Java编译器

D.Java类分解器

答案:B

Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。
Java解释器:是JVM的一部分。用来解释执行Java编译器编译后的程序。java.exe可以看成是Java解释器。

32、下列关于构造方法的叙述中,错误的是?

A. Java语言规定构造方法名与类名必须相同

B. Java语言规定构造方法没有返回值,但不用void声明

C. Java语言规定构造方法不可以重载

D. Java语言规定构造方法只能通过new自动调用

答案:C

33、 构造函数何时被调用

A.类定义时

B.创建对象时

C.调用对象方法时

D.使用对象的变量时

答案:B

34、break语句?

A、只中断最内层的循环

B、只中断最外层的循环

C、借助于标号,可以实现任何外层循环中断

D、只中断某一层的循环

答案:D

continue时,跳出本次循环,继续执行下次循环。
break用于循环语句中的作用是结束当前所在的循环语句。

35、Java语言中下面哪个可以用作正确的变量名称

A、3D B、name C、extends D、implements

答案:B

36、在JavaScript中如何验证一个数据是否是数字

A.如果用Integer.parseInt(value)有误就不是数字

B. int I = value 若报错就不是数字,

C. 没有方法验证

D .利用isNaN(value) 返回的boolean进行判断

答案:D

返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)

37、下面哪一个不能作JSP的服务器

A. IBM WebSphere

B. BEA WebLogic

C. Tomcat

D. pws

答案:D

38、下面哪项不是JSP操作指令

A. getProperty

B. forward

C. include

D. import

答案:D

jsp包含三个编译指令和七个动作指令。
三个编译指令为:page、include、taglib。
七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。

39、如果希望控件在界面上按表格行分列排列,应使用下列那种布局管理器

A、BoxLayout

B、GridLayout

C、BorderLayout

D、FlowLouLayout

答案:B

40、下面哪一项不是Java类访问控制关键字

A. public

B. protected

C. this

D. private

答案:C

41、在配置tomcat虚拟目录时,需要打开哪个文件?

A. index.jsp

B. web.xml

C.server.xml

D.以上都不是

答案:C

42、下面哪个不是表单标记

A. INPUT

B.RADIO

C.CHECKBOX

D. TR

答案:D

43、下面哪项不是response对象的方法

A. setContentType(String contentTypestr)

B. setHeader(String headername,String headervalue)

C. getParameter(String str)

D. sendError(int errorcode)

答案:C

44、哪个是编写Servlet必须导入的包.

A.java.sql.*

B.java.servlet.*

C.java.util.*

D.java.lang.*

答案:B

45、下面哪项不属于SQL语句的子类

A. 数据定义语言(DDL)

B. 数据查询语言(DQL)

C. 事务控制语言(TCL)

D. 数据插入语言 (DIL)

答案:D

46、Java是从()语言改进重新设计

A.Ada

B.C++

C.Pasacal

D.BASIC

答案:B

47、下列语句哪一个正确

A.Java程序经编译后会产生machinecode

B.Java程序经编译后会产生bytecode

C.Java程序经编译后会产生DLL

D.以上都不正确

答案:B

48、下列说法正确的有

A.class中的constructor不可省略

B.constructor必须与class同名,但方法不能与class同名

C.constructor在一个对象被new时执行

D.一个class只能定义一个constructor

答案:C

49、下列语句正确的是

A.形式参数可被视为localvariable(局部变量)

B.形式参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数

D.形式参数不可以是对象

答案:A

形式参数是指在函数名后面的小括号里定义的变量, 用于接受来自调用函数的
参数
对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 public void add(final int a){}

public static void add(int x,int y){    }    //其中参数x和y就是形式参数

public static void main(String[] args){  
	int a=5;
	int b=6;
	add(a,b);      //这里a和b就是实际参数
}

50、构造器Constructor是否可被override、Overloading?

A.不能重写Overriding,但可以被重载Overloading

B.能重写Overriding,也可以被重载Overloading

C.不能重写Overriding,也不可以被重载Overloading

D.能重写Overriding,也可以被重载Overloading

答案:A

51、如下哪个不是 Java 中正确的整数表示

A.22

B.0x22

C.022

D.22H

答案:D

52、下面哪个语句不能定义一个字符变量

A.char c1=’a’;

B.char c2=”S ”;

C.char c4=9da7 ;

D.char c3=’\u0041’;

答案:B

字符常量是用单引号括起来的字符
字符变量的值是ASCII的值,即字符变量可以当做整型变量来处理,可以用来参与整型变量的运算。
字符0-9的ASCII码:48-56;
大写字母A-Z的ASCII码为:65-90;
小写字母a-z的ASCII码为:97-122;
空字符的ASCII码为0;
制表符的ASCII码为9;
换行符的ASCII码为10。

53、给定如下java代码程序片断,程序将

class A{

	public A(){
		System.out.println(“A”);
	}

}

class B extends A{

	public B(){
		System.out.println(“B”);	
	}
	
	public static void main(String[] args){
		B b=new B();
	}

}

A.不能通过编译

B.通过编译,输出为AB

C.通过编译,输出为B

D.通过编译,输出为A

答案:B

在创建子类的对象时,jvm会首先执行父类的构造方法,然后再执行子类的构造方法,如果是多级继承,会先执行最顶级父类的构造方法,然后依次执行各级个子类的构造方法。

54、Java编程所必须的默认引用包

A.java.sys包 
   
B.java.lang包

C.java.new包 
   
D.以上都不是

答案:B

55、访问修饰符作用范围由大到小是

A.private-default-protected-public

B.public-default-protected-private

C.private-protected-default-public

D.public-protected-default-private

答案:D

56、给出下面的代码段 :在代码说明 // assignment x=a, y=b 处写入如下哪个代码是正确的?

public class Base{
	int w, x, y ,z;
	public Base(int a,int b){
		x=a; y=b;
	}
	public Base(int a, int b, int c, int d){
		// assignment x=a, y=b
		w=d;
		z=c;
	}
}

A.Base(a,b);

B.x=a, y=b;

C.this(a),this(b);

D.this(a,b);

答案:D

A错,调用Base这个构造方法应该这样 new Base(a,b)
B错,和C相比应该是分号不是逗号
C错,没有单个参数的构造函数
D调用本类的构造方法

57、当编译并运行下面程序时会发生什么结果

public class Bground extends Thread{

    public static void main(String argv[]){、
          Bground b = new Bground();
          b.run();
    }

	public void start(){	
	      for (int i = 0; i <10; i++){
	           System.out.println("Value of i = " + i);
	      }
	}
}

A.编译错误,指明run方法没有定义

B.运行错误,指明run方法没有定义

C.编译通过并输出0到9

D.编译通过但无输出

答案:D

58、对象使用时,下面描述错误的是

A.通过“.”运算符调用成员变量和方法

B.通过成员变量的访问权限设定限制自身对这些变量方法的调用

C.将一个对象申明为类的成员时,必须在使用前为其分配内存

D.在方法中使用对象作为参数时,采用引用调用

答案:B

不是限制自身

59、下列不属于容器的是

A.Window 
 
B.TextBox

C.Panel 
   
D.ScrollPane

答案:B

60、Frame的默认的布局管理器是下列哪一个

A.FlowLayout 
     
B.BorderLayout

C.GridLayout 
     
D.CardLayout

答案:B

61、监听器接口的方法返回值是什么

A.int

B.String

C.void

D.Object

答案:C

62、新建一个流对象,下面哪个选项的代码是错误的?

A.new BufferedWriter(new FileWriter(“a.txt”));

B.new BufferedReader(new FileInputStream(“a.dat”));

C.new GZIPOutputStream(new FileOutputStream(“a.zip”));

D.new ObjectInputStream(new FileInputStream(“a.dat”));

答案:B

63、以下程序运行结果是

public int div(int a, int b) {
	try {
		return a / b;
	} catch (Exception e) {
		System.out.println("Exception");
	} catch (NullPointerException e) {
		System.out.println("ArithmeticException");
	}
	catch (ArithmeticException e) {
		System.out.println("ArithmeticException");
	} finally {
		System.out.println("finally");
	}
	return 0;
}

public static void main(String[] args) {
	Test demo = new Test();
	System.out.println(“商是:” + demo.div(9, 0));
}

A.Exception finally 商是:0

B.ArithmeticException finally 商是:0

C.finally商是:0

D.编译报错

答案:D

捕获异常的范围应该从小到大

64、以下对TCP和UDP描述正确的是

A.TCP不能提供数据的可靠性

B.UDP能够保证数据库的可靠性

C.TCP数据传输效率高于UDP

D.UDP数据传输效率高于TCP

答案:D

65、下列选项中关于java中super关键字的说法错误的是

A.super关键字是在子类对象内部指代其父类对象的引用

B.super关键字不仅可以指代子类的直接父类,还可以指代父类的父类

C.子类可以通过super关键字调用父类的方法

D.子类可以通过super关键字调用父类的属性

答案: B

super只能指代其直接父类,在父类中调用super能指代父类的父类。

66、在Java中,以下代码( )正确地创建了一个InputStreamReader对象。

A.InuptStreamReader(new FileInputStream(“1.dat”));

B.InuptStreamReader(new FileReader(“1.dat”));

C.InuptStreamReader(new BufferReader(“1.dat”));

D.InuptStreamReader (“1.dat”);

答案:A

67、在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作

A.FileInputStream

B. FileReader

C.FileWriter

D.File

答案:D

68、正确的是

在Java中开发JDBC应用程序时,使用DriverManager类的getConnection()方法建立与数据源的连接语句为:

Connection con = DriverManager.getConnection(“jdbc:odbc:news”);

URL连接中的”news”表示的是

A.数据库中表的名称

B.数据库服务器的机器名

C.数据源的名称

D.用户名

答案:C

69、分析下面这段Java代码,它的运行结果是

Import java.io.*;

Public class B{

Public static void main(string [] args){

int i=12;

System.out.println(i+=i-=i*=i);}}

A.100

B.0

C.-120

D.程序无法编译

答案:C

i+=i-=i*=i 简写为: i = i*(2-i) = -120
第一步:i=i +(i-=i*=i)
第二步:i = i + (i=i-(i*=i))
第三步:i = i + (i=i-( i=i *i))

70、以下对JDBC事务描述错误的是

A.JDBC事务属于JAVA事务的一种

B.JDBC事务属于容器事务类型

C.JDBC事务可以保证操作的完整性和一致性

D.JDBC事务是由Connection发起的,并由Connection控制

答案:B

71、要通过可滚动的结果集更新数据,以下正确的是

A.pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)

B.pst=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)

C.pst=con.prepareStatement(sql, Resu ltSet.TYPE_SCROLL_SENSITIVE)

D.pst=con.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE)

答案:A

72、以下描述正确的是

A.CallableStatement是PreparedStatement的父接口

B.PreparedStatement是CallableStatement的父接口

C.CallableStatement是Statement的子接口

D.PreparedStatement是Statement的父接口

答案:B

73、要删除book表中书籍(bookName)是”java”的记录,以下代码正确的是

String sql=”delete from book where bookName=?”;

PreparedStatement pst=con.preparedStatement(sql);

______________________________

pst.execute();

A.pst.setString(1,”java”);

B.pst.setString(0,”java”);

C.pst.setInt(0,”java”);

D.以上选项都不正确

答案:A

74、获取ResutlSet对象rst的第一行数据,以下正确的是

A.rst.hashNext();

B.rst.next();

C.rst.first();

D.rst.nextRow();

答案:B

75、要从文件"file.dat"中读出第10个字节到变量c中,下列哪个方法适合?

A、FileInputStreamin=newFileInputStream(“file.dat”);in.skip(9);intc=in.read();

B、FileInputStreamin=newFileInputStream(“file.dat”);in.skip(10);intc=in.read();

C、FileInputStreamin=newFileInputStream(“file.dat”);intc=in.read();

D、RandomAccessFilein=newRandomAccessFile(“file.dat”);in.skip(9);intc=in.readByte();

答案:D

76、下面语句在编译时不会出现警告或错误的是

A、floatf=3.14;

B、charc=”c”;

C、Booleanb=null;

D、inti=10.0;

答案:C

77、下面程序中类ClassDemo中定义了一个静态变量sum,分析程序段的输出结果。

class ClassDemo {

   public static int sum=1;

   public ClassDemo() {

      sum = sum + 5;

   }

}

public class ClassDemoTest{

   public static void main(String args[]) {

   ClassDemo demo1=new ClassDemo();

   ClassDemo demo2=new ClassDemo();

   System.out.println(demo1.sum);

   }

}

A、0

B、6

C、11

D、2

答案:C

78、声明成员变量时,如果不使用任何访问控制符(public, protected, private),则以下哪种类型的类不能对该成员进行直接访问

A、同一类

B、同一包中的子类

C、同一包中的非子类

D、不同包中的子类

答案解析:D

default:当成员变量未声明访问控制符时,为default,它的作用范围是:在同一包下可以被访问
protect:表示可以被同一个包的类以及其它包的子类访问。

79、Java的集合框架中重要的接口java.util.Collection定义了许多方法。选项中哪个方法不是Collection接口所定义的?

A、int size()

B、boolean containsAll(Collection c)

C、compareTo(Object obj)

D、boolean remove(Object obj)

答案:C

80、阅读Shape和Circle两个类的定义。在序列化一个Circle的对象circle到文件时,下面哪个字段会被保存到文件中?

class Shape {

           public String name;

}

class Circle extends Shape implements Serializable{

       private float radius;

       transient int color;

       public static String type = "Circle";

}

A、name

B、radius

C、color

D、type

答案:B

静态变量是不会被序列化的
transient 修饰的变量不会 被序列号

81、下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child(“mike”)的时候都有哪些构造方法被顺序调用?请选择输出结果

class People {

       String name;

       public People() {  System.out.print(1); }

       public People(String name) {

              System.out.print(2);

              this.name = name;

       }

}

class Child extends People {

       People father;

       public Child(String name) {

              System.out.print(3);

              this.name = name;

              father = new People(name + ":F");

       }

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

} 

A、312

B、32

C、432

D、132

答案:D

java中只要调用子类的构造函数就要调用父类无参数的构造函数;
若父类中不存在无参数构造函数会出错;

82、下面哪个选项中的代码没有定义内部类,或者错误的定义了内部类?

A、public Class Line { int length; Class Point {//内部类代码} }

B、public Class Line { public Point getPoint() { return new Point(){//内部类代码}; } }

C、public Class Line { //外部类代码 } Class Point {//内部类代码}

D、public Class Line { public int calcLength() { Class Point {//内部类代码} } }

答案:C

83、A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明

  1. A a0=new A();

  2. A a1 =new B();

  3. A a2=new C();

问以下哪个说法是正确的?

A、只有第1行能通过编译

B、第1、2行能通过编译,但第3行编译出错

C、第1、2、3行能通过编译,但第2、3行运行时出错

D、第1行、第2行和第3行的声明都是正确的

答案:D

84、Java的字符类型采用的是Unicode编码方案,每个Unicode码占用()个比特位

A、8

B、16

C、32

D、64

答案:B

一个UNICODE字符占两字节,一字节是8位,所以,每个UNICODE码占用16个比特位。

85、给出下面代码,关于该程序以下哪个说法是正确的?

public class Person {

	static int arr[] = new int[5];

	public static void main(String a[]) {

		System.out.println(arr[0]);
	}

}

A、编译时将产生错误

B、编译时正确,运行时将产生错误

C、输出零

D、输出空

答案:C

86、编译并运行以下程序,以下描述哪个选项是正确的

1.  class  A{

2.      protected  boolean  equals(){

3.           return  super.equals();

4. }

5. }

A、编译通过运行无异常

B、编译通过但运行时出错

C、行2出错,不能成功编译

D、不能成功编译,行3出错

答案:D

87、有语句String s=”hello world”; ,以下操作哪个是不合法的?

A、inti=s.length();

B、s>>>=3;

C、Stringts=s.trim();

D、Stringt=s+”!”;

答案:B

88、结构化程序设计所规定的三种基本控制结构是

A、输入、处理、输出

B、树形、网形、环形

C、顺序、选择、循环

D、主程序、子程序、函数

答案:C

89、下列关于for循环和while循环的说法中哪个是正确的?

A、while循环能实现的操作,for循环也都能实现

B、while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果

C、两种循环任何时候都可替换

D、两种循环结构中都必须有循环体,循环体不能为空

答案:C

90、阅读以下代码:输出结果应该是

import java.io.*;

import java.util.*;

public class foo{

public static void main (String[] args){

String s;

System.out.println("s=" + s);

}

}

A、代码得到编译,并输出“s=”

B、代码得到编译,并输出“s=null”

C、由于Strings没有初始化,代码不能编译通过

D、代码得到编译,但捕获到NullPointException异常

答案:C

91、编译运行以下程序后,关于输出结果的说明正确的是

public  class   Conditional{
   public  static  void  main(String  args[ ]){
        int  x=4;
        System.out.println(“value  is  “+ ((x>4) ? 99.9:9));
	}
}

A、输出结果为:valueis99.9

B、输出结果为:valueis9

C、输出结果为:valueis9.0

D、编译错误

答案:C

92、执行完以下代码int [ ] x = new int[10];后,以下哪项说明是正确的

A、x[9]为0

B、x[9]未定义

C、x[10]为0

D、x[0]为空

答案:A

93、关于以下程序段,正确的说法是

1.  String  s1=“a”+“b”;

2.   String  s2=new  String(s1);

3.    if(s1= =s2)

4.       System.out.println(“= =  is succeeded”);

5.     if (s1.equals(s2))

6.        System.out.println(“.equals() is succeeded”);

A、行4与行6都将执行

B、行4执行,行6不执行

C、行6执行,行4不执行

D、行4、行6都不执行

答案:C

==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象;
equals用来比较的是两个对象的内容是否相等

对于==来说,主要针对基本数据类型和引用数据类型
基本数据类型:byte,short,char,int,long,float,double,boolean
基本数据类型之间的比较需要用双等号(==),因为他们比较的是值
引用数据类型:接口、类、数组、字符串
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为没new一次就会重新开辟一个新的堆内存空间

94、下面声明数组的写法错误

A、int  a[ ];                 

B、int[ ]  a;

C、int[3][ ]  a;               

D、int[ ][3] a;

答案:D

95、设x为float型变量,y为double型变量,a为int型变量,b为long型变量, c为char型变量,则表达式x+y*a/x+b/y+c的值为()类型

A、int

B、long

C、double

D、char

答案:C

char -->int —>unsigned–>long—>double <----float

不同类型先转换成同一类型再计算
转换按长度从小转到大的方向进行,保证精度不丢失,如int * long,先把int转换成long
所有浮点数运算都要以双精度类型计算,即时只含有float类型
char型和short型参与运算时,必须先转换成int型
赋值时,如果等号右边的类型长度比左边长,自动转换后会丢失精度
补充:java浮点数默认为double,如果要定义float型浮点数要在后面添加f

96、运行下列程序, 会产生什么结果

public class X extends Thread implements Runnable{ 

     public void run(){ 

         System.out.println("this is run()"); 

     } 

     public static void main(String args[]) { 

         Thread t=new Thread(new X()); 

         t.start(); 

     } 

} 

A、第一行会产生编译错误

B、第六行会产生编译错误

C、第六行会产生运行错误

D、程序会运行和启动

答案:D

97、指出下列程序运行的结果

public class Example{ 

    String str=new String("good"); 

     char[] ch = {'a','b','c'}; 

     public static void main(String args[]){ 

         Example ex=new Example(); 

         ex.change(ex.str,ex.ch); 

         System.out.print(ex.str+" and "); 

         System.out.print(ex.ch); 

     }

    public void change(String str,char ch[]){ 

         str="test ok"; 

         ch[0]='g'; 

     }

}

A、good and abc

B、good and gbc

C、test ok and abc

D、test ok and gbc

答案:B

形参:用来接收调用该方法时传递的参数。只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间。因此仅仅在方法内有效。
public void swap(int a, int b);这里边的a,b就是形参

实参:传递给被调用方法的值,预先创建并赋予确定值
swap(1,2);其中1和2就是实际的参数值,就叫实参

值传递:传递的参数为基本数据类型,参数视为形参,不影响实际参数的值

引用传递:传递的参数是引用数据类型,参数视为实参。在调用的过程中,将实参的地址传递给了形参,形参上的改变都发生在实参上

98、

99、

100、


如果你觉得本篇文章对你有所帮助的话,麻烦请点击头像右边的关注按钮,谢谢!

技术在交流中进步,知识在分享中传播

你可能感兴趣的:(面试,JAVA,java,笔试题)