目录
盛世吉软java基础试题笔试部分
15.给出以下代码,请问在程序的第6行插入那条语句,改程序可依次打印输出11、10、9?(C)
2.根据下面的代码,String s = null;会抛出NullPointerException异常的有(AC)。
1.谈谈final, finally, finalize的区别。
4.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行。
5.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2、从控制台中读入一个文件名, 判断该文件是否存在你的某个盘下。 如果该文件存在, 则在原文件相同路径下创建一个文件名为“copy_原文件名”的新文 件, 该文件内容为原文件的拷贝。
4、随机生成10个百位以内数字并存入集合中(任意集合均可,自行决定)。 利用自己擅长的方式对其10个数字进行排序,排序后按小到大方式输出。
盛世吉软java基础试题笔试部分
姓名 得分
一、选择题(每题2分,共30分)
-
1.下列哪一个不属于java的基本类型(B)
- A int
- B String
- C float
- D byte
-
2.下列那条语句能编译通过(A)
- A String String=”String”;
- B float float=”3.14”;
- C int int = 11;
- D int i= 1.1;
-
3.int长度描述正确的是(A)
- A -2^31到2^31 - 1
- B -2^32到2^32 - 1
- C -2^7到2^7 - 1
- D -2^8到2^8 - 1
-
4.关于==和equals方法描述不正确的是(D)
- A ==是运算符、equals是方法
- B ==只比较对象,equals会先比较对象,如果不是一个对象,会对对象的值进行比较。
- C String a= "1"; String b= "1"; System.out.println(a==b); 输出结果为:true
- D String a=new String("1");String b=new String("1");
System.out.println(a==b);输出结果为:true
-
5.以下关于接口和类的说法正确的是(C)
- A 接口和类都可以实现多重继承
- B 子类可以继承多个父类
- C 子类可以实现多个接口
- D 一个子类不能同时继承某一个父类和实现某一个接口
-
6.一个非抽象子类,如果要实现某个接口,则(A)
- A 必须实现该接口中的所有抽象方法
- B 可以实现部分抽象方法
- C 可以不实现任何抽象方法
- D 无所谓
-
7.下列关于Java线程的说法那些是正确的(D)
- A 每一个Java、线程可以看成由代码.一个真实的CPU以及数据三部份组成。
- B 创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。
- C Thread类属于java.util程序包。
- D 以上说法无一正确。
-
8.下列哪个方法能让当前线程释放对象锁(A)
- A wait()
- B join()
- C start()
- D sleep()
-
9.下列哪个不是线程的基本状态(D)
- A 就绪状态
- B 运行状态
- C 阻塞状态
- D 响应状态
-
10.下列代码的执行结果是: (D)
public class Test1{ public static void main(String args[]){ float t=9.0f; int q=5; System.out.println((t++)*(--q)); } } |
- A 40
- B 40.0
- C 36
- D 36.0
-
11.下列代码的执行结果是: (A)
String s = "Hello" + 9 + 1; String s1 = 9 + 1 + "Hello"; System.out.println(s +"+"+ s1); |
- A Hello91+10Hello
- B Hello10+10Hello
- C Hello91+91Hello
- D Hello20Hello
-
12.执行如下程序代码后,C的值是(C)
int a=0; int c=0; do{ --c; a=a-1; }while(a>0); |
- A 0
- B 1
- C -1
- D 死循环
-
13.关于以下程序代码的说明正确的是(D)
1.class HasStatic{ 2. private static int x=100; 3. public static void main(String args[ ]){ 4. HasStatic hs1=new HasStatic( ); 5. hs1.x++; 6. HasStatic hs2=new HasStatic( ); 7. hs2.x++; 8. hs1=new HasStatic( ); 9. hs1.x++; 10. HasStatic.x- -; 11. System.out.println(“x=”+x); 12. } 13. } |
- A 5行不能通过编译,因为引用了私有静态变量
- B 10行不能通过编译,因为x是私有静态变量
- C 程序通过编译,输出结果为:x=103
- D 程序通过编译,输出结果为:x=102
-
14.以下代码执行结果是?(A)
public class Example { public static void main(String[] args) { System.out.println("string".endsWith("")); } } |
- A 输出true
- B 输出false
- C 编译失败
- D 运行时输出异常信息
-
15.给出以下代码,请问在程序的第6行插入那条语句,改程序可依次打印输出11、10、9?(C)
1.public class Example { 2. public static void main(String[] args) { 3. double x[] = { 10.2, 9.1, 8.7 }; 4. int i[] = new int[3]; 5. for (int a = 0; a < x.length; a++) { 6. 7. System.out.println(i[a]); 8. } 9. } 10.} |
- A i[1] = ((int)Math.min(x[a]));
- B i[1] = ((int)Math.max(x[a]));
- C i[1] = ((int)Math.ceil(x[a]));
- D i[1] = ((int)Math.floor(x[a]));
-
二、多选择题(每题2分,共20分)
-
1.不能用来修饰interface的有(ACD)
- A private
- B public
- C protected
- D static
-
2.根据下面的代码,String s = null;会抛出NullPointerException异常的有(AC)。
- A if( (s!=null) & (s.length()>0) )
- B if( (s!=null) & & (s.length()>0) )
- C if( (s==null) | (s.length()==0) )
- D if( (s==null) || (s.length()==0) )
-
3.下面方法中,用于调度线程使其运行的是?(BC)
- A init()
- B start()
- C run()
- D resume()
- E sleep()
-
4.下面哪种情况能实现自动转换(ACE)。
- A byte 型转换成 int 型
- B int 型转换成 byte 型
- C float 型转换成 double型
- D double 型转换成 int 型
- E char型转换成 int 型
-
5.下列那些是正确的JAVA字符串?(ABD)。
- A "\"\""
- B "Oxzabc"
- C "\"\"
- D "\t\t\r\n"
- E "boolean"5
-
6.下列说法错误的有(ACD)
- A 在类方法中可用this来调用本类的类方法
- B 在类方法中调用本类的类方法时可直接调用
- C 在类方法中只能调用本类中的类方法
- D 在类方法中绝对不能调用实例方法
-
7.下列说法错误的有(ABC)
- A Java面向对象语言容许单独的过程与函数存在
- B Java面向对象语言容许单独的方法存在
- C Java语言中的方法属于类中的成员(member)
- D Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
-
8.下面关于数组说法正确的是(ACBDE) 。
- A 一维数组实质上是相同类型变量的列表
- B 创建一个数组首先定义数组变量所需的类型
- C char c[]=new char[26];可声明一个含有 26 个元素的 char型数组
- D 当为一个多维数组的时候分配内存时,仅需要为第一指定内存,然后再分配其他维的存
- E int twain[][] = new int[4][5];可声明一个二维数组
-
9.在接口中以下哪条定义是正确的 (AB)
- A void methoda();
- B public double methoda();
- C public final double methoda();
- D static void methoda(double d1);
- E protected void methoda(double d1);
-
10.关于抽象类的说法不正确的是(ACD)
- A 抽象类中一定包含抽象方法,否则是错误
- B 包含抽象方法的类一定是抽象类
- C 抽象方法可以没有方法体,也可以有方法体
- D 抽象类的子类一定不是抽象类
-
三、判断题(每题2分,共10分)
- try…catch…finally结构中可以有多个catch,也可以没有catch。 ( √ )
- switch 语句中的case 后⾯的常量可以是枚举类型、Long、Double和int 类型,不可以是String型 ( × )
- 一个类可以同时实现多个接口 ( √ )
- java.lang.Exception异常类是一个可以序列化的公共类,是所有异常的根类,实现了Throwable接口 。 ( × )
- 在流程控制语句中,break语句表示直接跳出循环,continue表示结束本次循环,继续下一次循环 ( √ )
-
四、填空题(每题2分,共10分)
1、一般Java程序的类体由两部分组成:一部分是 属性 ,另一部分是 方法
2、子类对父类继承来的属性重新定义称为 重写 。子类对自身拥有的同名方法的重新定义称 重载 。
3、.⾯向对象的计算机语⾔⼀般应有3 个基本特征,分别是 封装 、 继承 和 多 态 。
4、若有byte b=1;int i=0; while(++b>0) i=i+1;,则while 退出时i 的值为 126 。
5、不能覆盖⽗类中的 final ⽅法和 private ⽅法。
-
五、简答题(每题5分,共30分)
-
1.谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
-
2.线程同步的方法(类里有哪些方法来支持线程同步)。
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切地唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
-
3.Error与Exception有什么区别
Error表示系统级的错误和程序不必处理的异常,
Exception表示需要捕捉或者需要程序进行处理的异常。
-
4.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行。
会,而且必修被执行
-
5.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
-
6.以下代码的执行结果是?
克隆前c1: a=100 b[0]=1000
克隆后c1: a=100 b[0]=1000
克隆后c2: a=50 b[0]=5
六、上机题
1、编写一个Java应用程序,
设计一个汽车类Vehicle,
包含的属性有车轮个数wheels和车重weight。
小车类Car是Vehicle的子类,其中包含的属性有载人数loader。
卡车类Truck是Car类的子类,其中包含的属性有载重量payload。
每个类都有构造方法和输出相关数据的方法。
class Truck extends Car {
private Integer payload;
public Integer getPayload() {
return payload;
}
public void setPayload(Integer payload) {
this.payload = payload;
}
public String show() {
return super.show() + ",载重量:" + payload;
}
}
class Car extends Vehicle {
private Integer loader;
public Integer getLoader() {
return loader;
}
public void setLoader(Integer loader) {
this.loader = loader;
}
public String show() {
return super.show() + ",人数:" + loader;
}
}
class Vehicle {
private Integer wheels;
private Integer weight;
public Integer getWheels() {
return wheels;
}
public void setWheels(Integer wheels) {
this.wheels = wheels;
}
public Integer getWeight() {
return weight;
}
public void setWeight(Integer weight) {
this.weight = weight;
}
public String show() {
return "汽车的车轮个数为:" +wheels + ",车重:" + weight;
}
}
public class Ch01 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.setWeight(200);
vehicle.setWheels(4);
System.out.println(vehicle.show());
Car car = new Car();
car.setWheels(4);
car.setWeight(150);
car.setLoader(5);
System.out.println(car.show());
Truck truck = new Truck();
truck.setWheels(12);
truck.setWeight(500);
truck.setPayload(1000);
truck.setLoader(2);
System.out.println(truck.show());
}
}
2、从控制台中读入一个文件名,
判断该文件是否存在你的某个盘下。
如果该文件存在,
则在原文件相同路径下创建一个文件名为“copy_原文件名”的新文 件, 该文件内容为原文件的拷贝。
public class Ch02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件名:");
String fileName = sc.next();
System.out.println("请输入盘符:(例如:E:/)");
String disk = sc.next();
File target = new File(disk,fileName);
if(target.exists()) {
File current = new File(disk,"copy_" + fileName);
InputStream in = null;
OutputStream out = null;
try {
current.createNewFile();
in = new FileInputStream(target);
out = new FileOutputStream(current);
byte [] buf = new byte[1024];
int len;
while((len = in.read(buf)) != -1){
out.write(buf,0,len);
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if(out != null) {
try {
out.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if(in != null) {
try {
in.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}else {
try {
target.createNewFile();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
3、随机生成100个,
10位字符串。
字符由a-z,A-Z,0-9随机组成。
并将生成的100个字符串存入容器中(提示:数组,集合)。
假定从键盘输入一个字符串,
判断这个字符串是否在生成的100字符中。并给出友好提示。
public class Ch03 {
public static void main(String[] args) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
List<String> list = new ArrayList<>(100);
StringBuilder strb = new StringBuilder();
int length = str.length();
for (int i = 0; i < 100; i++) {
strb.delete(0,strb.length());
for (int j = 0; j < 10; j++) {
// 生成0-length的随机数
// [0,length),包含0,不包含length
// 通过String的charAt方法取出指定的字符,然后进行拼接
// 0是最小值,length是最大值
// 0-length
strb.append(str.charAt((int)(Math.random() * length)));
}
list.add(strb.toString());
}
System.out.println("数据生成成功!");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个十位的字符串:");
String target = sc.next();
if(list.contains(target)){
System.out.println("字符串在对应的容器中存在!");
}else {
System.out.println("字符串在对应的容器中不存在!");
System.out.println("容器中的字符串为:" + list);
}
}
}
4、随机生成10个百位以内数字并存入集合中(任意集合均可,自行决定)。
利用自己擅长的方式对其10个数字进行排序,排序后按小到大方式输出。
public class Ch04 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(10);
Random random = new Random();
for (int i = 0; i < 10; i++) {
int i1 = random.nextInt(100);
list.add(i1);
}
System.out.println("数据生成成功:" + list);
Collections.sort(list);
System.out.println("排序过后的数据为:" + list);
}
}