1.以下二维数组声明合法的是( )
A.char[2][3] ch = new char[][]
B.char[2][] ch = new char[][3]
C.char[][] ch = new char[2][3]
D.char[][] ch = new [2]char[3]
正确答案: C 你的答案: C (正确)
解析:和定义一维数组一样
一维数组的定义方法:int [] arr=new int [];
第一个括号不能写内容 ,第二个括号可以写也可以不写。
2.在异常处理中,以下描述不正确的有
A.try块不可以省略
B.可以使用多重catch块
C.finally块可以省略
D.catch块和finally块可以同时省略
正确答案: D 你的答案: D (正确)
解析:假如try中有异常抛出,则会去执行catch块,再去执行finally块;假如没有catch 块,可以直接执行finally 块,方法就以抛出异常的方式结束,而finally 后的内容也不会被执行,所以catch 和 finally 不能同时省略。
try块是捕捉异常用的,用来做防护的,如果有异常发生将会在catch中捕获并加以处理,finally中是用来做最后的回收情况的必然会执行,而catch块不一定执行,catch有可能会有多个因为这样处理不同异常情况。
3.装箱、拆箱操作发生在: ()
A.类与对象之间
B.对象与对象之间
C.引用类型与值类型之间
D.引用类型与引用类型之间
正确答案: C 你的答案: B (错误)
解析:通俗的讲,就是基本数据类型和包装类之间的转换。如: int 类型和 Integer 类的转换
基本数据类型转化成包装类是装箱 (如: int --> Integer)。
包装类转化成基本数据类型就是拆箱 (如:Integer --> int)。
包装类就是引用类型,基本数据类型就是值类型。所以选C
4.下面哪个标识符是合法的?
A.9HelloWorld"
B."_Hello World"
C."HelloWorld"
D.“Hello$World”
正确答案: D 你的答案: D (正确)
解析:A以字母开头错误,B中间有空格错误,C中间有错误。所以选D。
5.When is the text “Hi there”displayed?
public class StaticTest
{
static
{
System.out.println(“Hi there”);
}
public void print()
{
System.out.println(“Hello”);
}
public static void main(String args[])
{
StaticTest st1 = new StaticTest();
st1.print();
StaticTest st2 = new StaticTest();
st2.print();
}
}
A.Never.
B.Each time a new object of type StaticTest is created.
C.Once when the class is loaded into the Java virtual machine.
D.Only when the main() method is executed.
正确答案: C 你的答案: B (错误)
解析:静态代码块优先于主方法,且只执行一次
被static修饰的语句或者变量有如下特点:
1.随着类的加载而加载
2.优先于对象存在
3.被所有对象所共享
4.可以直接被类名所调用
使用注意:
1.静态方法只能访问静态成员
2.静态方法中不可以写this,super关键字
3.主函数是静态的
6.指出以下程序运行的结果是
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.tst ok and abc
D.tst ok and gbc
正确答案: B 你的答案: D (错误)
解析:由于String不可变,故当执行change方法时候,str的地址会指向“test ok”,但是当执行完以后,依旧会输出原来地址指向的“good”,而char类型是可变的 故选择B
7.JSP分页代码中,哪个步骤次序是正确的?
A.先取总记录数,得到总页数,最后显示本页的数据。
B.先取所有的记录,得到总页数,再取总记录数,最后显示本页的数据。
C.先取总页数,得到总记录数,再取所有的记录,最后显示本页的数据。
D.先取本页的数据,得到总页数,再取总记录数,最后显示所有的记录。
正确答案: A 你的答案: B (错误)
解析:记住即可。
8.关于sleep()和wait(),以下描述错误的一项是( )
A.sleep是线程类(Thread)的方法,wait是Object类的方法;
B.sleep不释放对象锁,wait放弃对象锁
C.sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D.wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
正确答案: D 你的答案: D (正确)
解析:D选项,notity()和notifyAll()两个方法均可,应该进入就绪状态而不是运行状态。
ava中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。
共同点 :
- 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。
- wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。
如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。
需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。
不同点 :
1.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。
sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
3.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
4.sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
5.wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
9.在java中,下列对继承的说法,正确的是( )
A.子类能继承父类的所有成员
B.子类继承父类的非私有方法和状态
C.子类只能继承父类的public方法和状态
D.子类只能继承父类的方法
正确答案: A 你的答案: B (错误)
解析:记住即可。
10.有关线程的叙述正确的是()
A.可以获得对任何对象的互斥锁定
B.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定
C.线程通过使用synchronized关键字可获得对象的互斥锁定
D.线程调度算法是平台独立的
正确答案: C D 你的答案: B C (错误)
解析:解析里面没有水平 学了以后再说吧