------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Java基础---练习题
1.写出程序结果
<span style="font-size:18px;">class Demo { public static void func() { try { { throw new Exception(); } finally { System.out.println("B"); } } } public static void main(String[] args) { try { func(); System.out.println("A"); } catch (Exception e) { System.out.println("C"); } System.out.println("D"); } }</span>结果是:编译失败,如果func上声明了该异常,
结果是:
B
C
D
2.写出程序结果
<span style="font-size:18px;">class Test { Test() { System.out.println("Test"); } } class Demo extends Test { Demo() { System.out.println("Demo"); } public static void main(String[] args) { new Demo(); new Test(); } }</span>结果是:Test
Demo
Test
考的是子类的实例化过程
3.写出程序结果
interface A{} class B implements A { public String func() { return "func"; } } class Demo { public static void main(String[] args) { A a=new B(); System.out.println("a.func"); } }结果是:编译失败,因为A接口中并未定义func()方法。
4.写出程序结果
class Fu { boolean show(char a) { System.out.println(a); return true; } } class Demo extends Fu { public static void main(String[] args) { int i=0; Fu f=new Demo(); Demo d=new Demo(); for(f.show('A');f.show('B')&&(i<2);f.show('c')) { i++; d.show('D'); } } boolean show(char a) { System.out.println(a); return false; } }结果是:A
B
5.写出程序结果
interface A{} class B implements A { public String Test() { return "yes"; } } class Demo { static A get() { return new B(); } public static void main(String[] args) { A a=get(); System.out.println(a.test); } }结果是:编译失败,因为A接口中没有定义Test方法
6.写出程序结果
class Super { int i=0; public Super(String a) { System.out.println("A"); i=1; } public Super() { System.out.println("B"); i+=2; } } class Demo extends Super { public Demo(String a) { System.out.println("C"); i=5; } public static void main(String[] args) { int i=4; Super d=new Demo("A"); System.out.println(d.i); } }结果是:
B
C
5
7.补足代码
interface Inter { void show(int a,int b) void func(); } class Demo { public static void main(String [] args) { //补足代码:调用两个函数,要求用匿名内部类 Inter in=new Inter() { public void show(int a,int b) { } public void func() { } }; in.show(4,5) in.funct(); } }
8.写出程序结果
class TD { int y=6; class Inner { static int y=3; void show() { System.out.println(y); } } } class Tc { public static void main(String[] args) { TD.Inner ti=new TD().new Inner(); ti.show(); } }编译失败,非静态内部类中不可以定义静态成员内部类中如果定义了静态成员,该内部类必须被静态修饰
9.选择题,写出错误答案错误的原因
class Demo { int show(int a,int b) { return 0; } }下面那些函数可以存在于Demo的子类中。
A. public int show(int a,int b) { return 0; }可以,因为覆盖。
B.private int show(int a,int b) { return 0; }不可以,权限不够。
C.private int show(int a,long b) { return 0; }可以,和父类不是一个函数,没有覆盖,相当于重载。
D.public short show(int a,int b) { return 0; }不可以,因为该函数不可以和给定函数出现在同一类中,或子父类中。
E.static int show(int a,int b) { return 0; }不可以,因为静态只能覆盖静态。
10.写出this关键字的含义,final有哪些特点?
this 用于区*部变量和成员变量同名的情况 this代表本类对象,简单的说,哪儿对象在调用this所在的函数, this就代表哪个对象。
final:最终。作为一个修饰符
1,可以修饰类,方法,变量。
2,被final修饰的类不可以被继承,为了避免被继承,被子类复写功能。
3,被final修饰的方法不可以被复写(覆盖)。
4,被final修饰的变量是一个常量,只能被赋值一次。既可以修饰成员变量又可以修饰局部变量。描述事物时, 一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读,而这个值是不 需要改变的,所以加上final修饰。作为常量:书写时所有字母都要大写,如果由多个单词组成,单词间通过_ 连接。
5,内部类只能访问被final修饰的局部变量
this 用于区*部变量和成员变量同名的情况 this代表本类对象,简单的说,哪儿对象在调用this所在的函数, this就代表哪个对象。
final:最终。作为一个修饰符
1,可以修饰类,方法,变量。
2,被final修饰的类不可以被继承,为了避免被继承,被子类复写功能。
3,被final修饰的方法不可以被复写(覆盖)。
4,被final修饰的变量是一个常量,只能被赋值一次。既可以修饰成员变量又可以修饰局部变量。描述事物时, 一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读,而这个值是不 需要改变的,所以加上final修饰。作为常量:书写时所有字母都要大写,如果由多个单词组成,单词间通过_ 连接。
5,内部类只能访问被final修饰的局部变量
11.写出程序结果
class Fu { int num=4; void show() { System.out.println("showFu"); } } class Zi extends Fu { int num=5; void show() { System.out.println("showZi"); } } class T { public static void main(String[] args) { Fu f=new Zi(); Zi z=new Zi(); System.out.println(f.num); System.out.println(z.num); f.show(); z.show(); } }结果是: 4
5
showZi
showZi
12.补足代码
interface A { void show(); } interface B { void add(int a,int b) } class C implements A,B { private int a,b; public void add(int a,int b) { this.a=a; this.b=b; } public void show() { System.out.println(a+b); } } class D { public static void main(String[] args) { C c=new C(); c.add(4,2); c.show();//通过该函数打印以上两个数的和。 } }
13.写出程序结果
class Demo { public static void main(String[] args) { try { showExce(); System.out.println("A"); } catch (Exception e) { System.out.println("B"); } finally { System.out.println("C"); } System.out.println("D"); } public static void showExce()throw Exception { throw new Exception(); } }结果是: B
C
D
14.写出程序结果
class Super { int i=0; //Super(){} public Super(String s) { i=1; } } class Demo extends Super { public Demo(String s) { i=2; } public static void main(String[] args) { Demo d=new Demo("yes"); System.out.println(d.i); } }结果是:编译失败,因为父类中缺少空参数的构造函数或者子类应该通过Super语句指定要调用的父类中的构造 函数
15.写出程序结果
所以这样的函数不能存在于子父类中。
class Super { public int get() { return 4; } } class Demo15 extends Super { public long get() { return 5; } public static void main(String [] args) { Super s=new Demo15(); System.out.println(s.get()); } }结果是:编译失败,因为子类父类中的get方法没有覆盖但是子类调用时候不能明确返回值是什么类型的。
所以这样的函数不能存在于子父类中。
16.写出程序结果
class Demo { public static void func() { try { throw new Exception; System.out.println("A"); } catch (Exception e) { System.out.println("B"); } } public static void main(String [] args) { try { func(); } catch (Exception e) { System.out.println("C"); } System.out.println("D"); } }结果是:编译失败,因为打印"A"的语句执行不到。记住:throw单独存在,下面不要定义语句,因为执行不到。
17.选择题
B 在位置2写 new Inner();
C 在位置2写 new d.Inner();
D 在位置2写 new Demo.Inner();
结果是: A对,
B错 因为主函数是静态的如果要访问Inner需要被static修饰,
C错 格式错误,new new demo().Inner();
D错 因为Inner不是静态的
格式 Outer.Inner in=new Outer().new Inner()
class Demo { public void func() { //位置1; } class Inner { } public static void main(String [] args) { Demo D=new Demo(); //位置2; } }A 在位置1写 new Inner();
B 在位置2写 new Inner();
C 在位置2写 new d.Inner();
D 在位置2写 new Demo.Inner();
结果是: A对,
B错 因为主函数是静态的如果要访问Inner需要被static修饰,
C错 格式错误,new new demo().Inner();
D错 因为Inner不是静态的
格式 Outer.Inner in=new Outer().new Inner()
18.写出程序结果
class Exc0 extends Exception {} class Exc1 extends Exc0 {} class Demo { public static void main(String [] args) { try { throw new Exc1; } catch (Exception e) { System.out.println("Exception"); } catch(Exc0 e) { System.out.println("Exc0"); } } }结果是:编译失败,多个catch时,父类的catch要放到下面。
19.补足代码
20.写出程序结果
interface Test { void func(); } class Demo { public static void main(String[] args) { //补足代码,(匿名内部类) new Demo().show(new Test() { public void func(){} } }); void show(Test t) { t.func(); } }
class Test { public static String output=""; public static void foo(int i) { try { if(i==1) throw new Exception(); output+="1"; } catch (Exception e) { output+="2"; return; } finally { output+="3"; } out+=4; } public static void main(String args[]); { foo(0); System.out.println(output) foo(1); System.out.println(output) } }结果是:134
13423
21.补足compare函数内的代码,不许添加其他函数
class Circle { private static double pi=3.14; private double radius; public static double compare(Circle[] cir) { //程序代码//其实就是在求数组中的最大值 int max=0; for(int x=1;x<cir.length;x++) { if(cir[x].radius>cir[max]) max=x; } return cir[max].radius; } } class TC { public static void main(String [] args) { Circle cir []=new Circle[3];//创建了一个类类型数组 Cir[0]=new Circle(1.0); Cir[1]=new Circle(2.0); Cir[2]=new Circle(4.0); System.out.println("最大的半径值是:"+Circle.compare(cir)); } }
public class Demo { private static int j=0; private static boolean methodB(int k) { j+=k; return true; } public static void methodA(int i) { boolean b; b=i<10|methodB(4); b=i<10||methodB(8); } public static void main(String[] args) { methodA(0); System.out.println(j); } }结果是:4
23.在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在数组,第一次出现的位置(序号从0开始计算) 否则返回-1,要搜索的字符数组和字符都以参数形式传递给该方法, 如果传入的数组为null,应该抛出IllegalArgumentsException异常 在类的main方法中以各种可能出现的情况测试验证该方法编写的是否正确, 例如,字符不存在,字符存在,传入的数组为null等。
getIndex(null,'a'); public int getIndex(char [] arr,char key) { if(arr==null) throw new IllegalArgumentsException("数组为null"); for(int x=0;x<arr.length;x++) { if(arr[x]==key) return x; } return -1; }
24.补足compare函数的代码,不许添加其他函数
class Circle { private double radius; public Circle(double r) { radius=r; } public Circle compare(Circle cir) { //程序代码 return (this.radius>cir.radius)?this:cir; } } class TC { public static void main(String[] args) { Circle cir1=new Circle(1,0); Circle cir2=new Circle(2,0); Circle cir; if(cir1==cir) System.out.println("圆1的半径比较大"); else System.out.println("圆2的半径比较大"); } }