T 1-1 A protected datum or method can be accessed by its subclasses in any package.
F 1-2 A final method can be overridden.
F 1-3 You can override a static method defined in a superclass.
T 1-4 An interface can extend from one or more interfaces.
T 1-5 A protected datum or method can be accessed by any class in the same package.。
F 1-6 A final class can be extended.
F 1-7 You can always successfully cast an instance of a superclass to a subclass.
T 1-8 An interface is compiled into a separate bytecode file.
T 1-9 An abstract method must be nonstatic.
F 1-10 An abstract class can extend an interface.
2-1
以下哪句是错误的?
A. 编译器会搜索要import的类的编译结果文件而不是源文件
B. import是告诉编译器要import的包的信息
C. import是把要import的类的源代码插入到import语句所在的地方
D. 编译器在编译的时候需要能访问得到要import的类的编译结果文件
2-2
Which of the following is a correct interface?
A. interface A { void print() { }; }
B. abstract interface A extends I1, I2 { abstract void print() { }; }
C. abstract interface A { print(); }
D. interface A { void print(); }
2-3
Which of the following classes definitions defines a legal abstract class?
A. class A { abstract void unfinished() { } }
B. class A { abstract void unfinished(); }
C. abstract class A { abstract void unfinished(); }
D. public class abstract A { abstract void unfinished(); }
2-4
以下关于继承的叙述正确的是( )。
A. 在Java中类只允许单一继承
B. 在Java中一个类只能实现一个接口
C. 在Java中一个类不能同时继承一个类和实现一个接口
D. 在Java中接口只允许单一继承
2-5
若A1、A2为已定义的接口 ,以下接口定义中没有语法错误的是( ) 。
A. interface B { void print() { } }
B. abstract interface B { void print() }
C. abstract interface B extends A1,A2 { abstract void print(){ };}
D. interface B { void print();}
2-6
在Java中,能实现多重继承效果的方式是( )。
A. 接口
B. 继承
C. 内部类
D. 适配器
2-7
下列选项中,用于实现接口的关键字是 ( )。
A. interface
B. implements
C. abstract
D. class
2-8
下列哪种异常是检查型异常,需要在编写程序时声明 ( ).
A. NullPointerException
B. ClassCastException
C. FileNotFoundException
C. IndexOutOfBoundsException
2-9
编译和运行下列程序会出现什么样的结果( )。
public class Ref
{
public static void main(String[] args){
Ref r = new Ref();
r.amethod(r);
}
public void amethod(Ref r){
int i = 99;
multi(r);
System.out.println(i);
}
public void multi(Ref r){
r.i = r.i * 2;
}
}
A. 编译出错
B. 输出:99
C. 输出:198
D. 运行出错
2-10
下述哪条关于构造方法的说法,不符合Java语法的规定( )。
A. 每个类至少有一个构造方法
B. 构造方法必须与类同名
C. 构造方法无返回值,其返回值类型必须写为void
D. 构造方法必须是public的
请编写程序,从键盘输入两个整数m,n,找出等于或大于m的前n个素数。
输入格式:
第一个整数为m,第二个整数为n;中间使用空格隔开。例如:
103 3
输出格式:
从小到大输出找到的等于或大于m的n个素数,每个一行。例如:
103
107
109
输入样例:
9223372036854775839 2
输出样例:
9223372036854775907 9223372036854775931
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
BigInteger m;
int n;
m=in.nextBigInteger();
n=in.nextInt();
int cnt=0;
while (cntif (m.isProbablePrime(100)){
System.out.println(m);
cnt++;
}
m=m.nextProbablePrime();
}
in.close();
}
}
从下列的抽象类shape类扩展出一个正五边形(regular pentagon)类RPentagon,这个类将正五边形的边长作为私有成员,类中包含初始化这个值的构造方法。
public abstract class shape {// 抽象类
/ 抽象方法 求面积 /
public abstract double getArea();
/ 抽象方法 求周长 /
public abstract double getPerimeter();
}
请编程从键盘输入正五边形的边长值,创建一个正五边形对象,然后输出正五边形的面积和正五边形的周长。计算正五边形的面积公式为: S=5a^2/(4tan(36度))其中a为边长。 或者:S=(1/4)a^2√(25+10√5) 输出结果保留4位小数。
输入格式:
输入正五边形的边长。例如:
5
输出格式:
输出正五边形的面积和周长。第一行输出面积,第二行输出周长。例如:
43.0119
25
输入样例:
16.8
输出样例:
485.5875 84
import java.text.DecimalFormat;
import java.util.Scanner;
abstract class shape {
public abstract double getArea();
public abstract double getPerimeter();
}
class RPentagon extends shape{
private double side;
public RPentagon(double side) {
this.side = side;
}
@Override
public double getArea() {
//return 5*side*side/(4*Math.tan(36.0/180*Math.PI));
return 0.25*side*side*Math.sqrt(25+10*Math.sqrt(5));
}
@Override
public double getPerimeter() {
return side*5;
}
}
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
DecimalFormat decimalFormat= new DecimalFormat("#.####");
double a=in.nextDouble();
RPentagon rPentagon= new RPentagon(a);
System.out.println(decimalFormat.format(rPentagon.getArea()));
System.out.println(decimalFormat.format(rPentagon.getPerimeter()));
in.close();
}
}
编程实现一个简单的计算器,实现两个整数的加、减、乘、除。 注意:输入的数字为整数,可能大于Long.MAX_VALUE (即: 9223372036854775807)
输入格式:
例如输入被除数和除数,除号是“/”:
199818221687230837883277970155607217447/15607605175531087007(除法运算)
输出格式:
12802618943776012921 (输出商)
输入样例:
268757455632088758902114193354244344883-187825044215992922193584201757800947591
输出样例:
80932411416095836708529991596443397292
提示:
一. 当字符串对象str存储的值为”199818221687230837883277970155607217447/15607605175531087007”时,下面的方法可以将str从除号”/”处分割成两个字符串:
String[] ob = str.split(“\D”, 0);
这时,ob[0]的值为”199818221687230837883277970155607217447”;
ob[1]的值为”15607605175531087007”.
二. 如果要检测字符串中是否包含除号’/’,可以用下面的方法检测:
(in1.indexOf(‘/’) != -1)为true,表示包含’/’。
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String string = in.next();
String[] ob = string.split("\\D");
BigInteger a = new BigInteger(ob[0]);
BigInteger b = new BigInteger(ob[1]);
int op = 0;
if (string.indexOf("+")!=-1) op=1;
else if (string.indexOf("-")!=-1) op=2;
else if (string.indexOf("*")!=-1) op=3;
else op=4;
switch (op){
case 1:
System.out.println(a.add(b));
break;
case 2:
System.out.println(a.subtract(b));
break;
case 3:
System.out.println(a.multiply(b));
break;
case 4:
System.out.println(a.divide(b));
break;
default:
System.out.println("op error.");
break;
}
}
}
求解给定字符串的前缀。
输入格式:
输入数目不定的多对字符串,每行两个,以空格分开。 例如:
filename filepath
Tom Jack
输出格式:
返回两个字符串的最大前缀,例如:
The common prefix is file
No common prefix
输入样例:
filename filepath Tom Jack
输出样例:
The common prefix is file No common prefix
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static String prefix(String s1, String s2){
StringBuffer stringBuffer = new StringBuffer("");
StringBuffer no = new StringBuffer("No common prefix");
StringBuffer yes = new StringBuffer("The common prefix is ");
boolean hasPrefix = false;
int i=0;
while (iif (s1.charAt(i)==s2.charAt(i)) {
hasPrefix=true;
stringBuffer.append(s1.charAt(i));
i++;
}
else {
break;
}
}
if (hasPrefix){
stringBuffer=yes.append(stringBuffer);
}else{
stringBuffer=no.append(stringBuffer);
}
return new String(stringBuffer);
}
public static void main(String[] args){
String string1,string2;
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
string1 = in.next();
string2 = in.next();
System.out.println(prefix(string1, string2));
}
in.close();
}
}
(找出最大的对象)编写一个方法,返回对象数组中最大的对象。方法签名如下:
public static Object max(Comparable[] a)
所有对象都是Comparable接口的实例。对象在数组中的顺序是由compareTo方法决定的。
编写测试程序,从键盘输入5个字符串和5个整数,创建一个由5个字符串构成的数组、一个由5个整数构成的数组。找出数组中最大的字符串、整数并输出。
输入格式:
输入
Xi’an (输入5个字符串,每行一个)
Beijing
ShangHai
GuangZhou
ShenZhen
8 9 12 7 6 (输入5个整数,以空格分隔)
输出格式:
输出 Max string is Xi’an (输出最大的字符串)
Max integer is 12 (输出最大的整数)
输入样例:
France Japan German China India 6 34 89 168 53
输出样例:
Max string is Japan Max integer is 168
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static Object max(Comparable[] a){
Arrays.sort(a);
return a[a.length-1];
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String[] str = new String[5];
Integer[] arr = new Integer[5];
for (int i = 0; i < 5; i++) {
str[i] = in.next();
}
for (int i = 0; i < 5; i++) {
arr[i] = in.nextInt();
}
System.out.println("Max string is "+max(str));
System.out.println("Max integer is "+max(arr));
in.close();
}
}
使用公历类 GregorianCalendar,公历类 GregorianCalendar有方法setTimeInMillis(long);可以用它来设置从1970年1月1日算起的一个特定时间。请编程从键盘输入一个长整型的值,然后输出对应的年、月和日。例如输入:1234567898765,输出:2009-1-14
输入格式:
输入
1234567898765 (毫秒数)
输出格式:
输出
2009-1-14 (输出年、月和日,实际应该是2月,因为Java API 从0开始计算月份)
输入样例:
1450921070108
输出样例:
2015-11-24
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
GregorianCalendar gcl= new GregorianCalendar();
Scanner in = new Scanner(System.in);
long time = in.nextLong();
gcl.setTimeInMillis(time);
System.out.println(gcl.get(Calendar.YEAR)+"-"+gcl.get(Calendar.MONTH)+"-"+gcl.get(Calendar.DAY_OF_MONTH));
}
}